From 5fa377d9273ee609784acc538a5defa09feb3095 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Sun, 10 May 2020 09:59:34 +0100 Subject: [PATCH] Do not loop forever when search finds an empty match, GitHub issue 2203. --- window-copy.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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)