mirror of
https://github.com/tmux/tmux.git
synced 2024-12-04 19:58:48 +00:00
REG_STARTEND is not portable, but it turns out we don't actually need
it. From Evan Green, GitHub issue 1982.
This commit is contained in:
parent
fef8ee23c0
commit
eb4d60b1ce
22
regsub.c
22
regsub.c
@ -77,10 +77,7 @@ regsub(const char *pattern, const char *with, const char *text, int flags)
|
||||
end = strlen(text);
|
||||
|
||||
while (start <= end) {
|
||||
m[0].rm_so = start;
|
||||
m[0].rm_eo = end;
|
||||
|
||||
if (regexec(&r, text, nitems(m), m, REG_STARTEND) != 0) {
|
||||
if (regexec(&r, text + start, nitems(m), m, 0) != 0) {
|
||||
regsub_copy(&buf, &len, text, start, end);
|
||||
break;
|
||||
}
|
||||
@ -89,22 +86,25 @@ regsub(const char *pattern, const char *with, const char *text, int flags)
|
||||
* Append any text not part of this match (from the end of the
|
||||
* last match).
|
||||
*/
|
||||
regsub_copy(&buf, &len, text, last, m[0].rm_so);
|
||||
regsub_copy(&buf, &len, text, last, m[0].rm_so + start);
|
||||
|
||||
/*
|
||||
* If the last match was empty and this one isn't (it is either
|
||||
* later or has matched text), expand this match. If it is
|
||||
* empty, move on one character and try again from there.
|
||||
*/
|
||||
if (empty || m[0].rm_so != last || m[0].rm_so != m[0].rm_eo) {
|
||||
regsub_expand(&buf, &len, with, text, m, nitems(m));
|
||||
if (empty ||
|
||||
start + m[0].rm_so != last ||
|
||||
m[0].rm_so != m[0].rm_eo) {
|
||||
regsub_expand(&buf, &len, with, text + start, m,
|
||||
nitems(m));
|
||||
|
||||
last = m[0].rm_eo;
|
||||
start = m[0].rm_eo;
|
||||
last = start + m[0].rm_eo;
|
||||
start += m[0].rm_eo;
|
||||
empty = 0;
|
||||
} else {
|
||||
last = m[0].rm_eo;
|
||||
start = m[0].rm_eo + 1;
|
||||
last = start + m[0].rm_eo;
|
||||
start += m[0].rm_eo + 1;
|
||||
empty = 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user