diff options
author | nicm <nicm> | 2020-05-16 16:03:57 +0000 |
---|---|---|
committer | nicm <nicm> | 2020-05-16 16:03:57 +0000 |
commit | 126bacb473f7950a156944caba42fad5f1764287 (patch) | |
tree | a309a60fd401f8fbfa00733efb35d4ddfdab9bdc /window-copy.c | |
parent | 592f141deef2583d6dd09f5a53a358671e7312b8 (diff) | |
download | rtmux-126bacb473f7950a156944caba42fad5f1764287.tar.gz rtmux-126bacb473f7950a156944caba42fad5f1764287.tar.bz2 rtmux-126bacb473f7950a156944caba42fad5f1764287.zip |
Do not loop forever when search finds an empty match, GitHub issue 2203.
Diffstat (limited to 'window-copy.c')
-rw-r--r-- | window-copy.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/window-copy.c b/window-copy.c index 4104d2ad..95b4cc6e 100644 --- a/window-copy.c +++ b/window-copy.c @@ -2445,7 +2445,8 @@ window_copy_search_lr_regex(struct grid *gd, u_int *ppx, u_int *psx, u_int py, len += gd->sx; } - if (regexec(reg, buf, 1, ®match, eflags) == 0) { + if (regexec(reg, buf, 1, ®match, eflags) == 0 && + regmatch.rm_so != regmatch.rm_eo) { foundx = first; foundy = py; window_copy_cstrtocellpos(gd, len, &foundx, &foundy, @@ -2547,6 +2548,8 @@ window_copy_last_regex(struct grid *gd, u_int py, u_int first, u_int last, foundy = py; oldx = first; while (regexec(preg, buf + px, 1, ®match, eflags) == 0) { + if (regmatch.rm_so == regmatch.rm_eo) + break; window_copy_cstrtocellpos(gd, len, &foundx, &foundy, buf + px + regmatch.rm_so); if (foundy > py || foundx >= last) |