From 65e7bcc2cbd62e217f500ea4ee542269a0d4b2f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Mon, 25 Jan 2021 13:43:07 +0100 Subject: sam: produce empty match at the end of looped range In certain cases (e.g. involving negated character classes) the last empty match of an x command would wrongly be skipped. See #925 --- sam.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sam.c') diff --git a/sam.c b/sam.c index 8e7b51f..24aefcd 100644 --- a/sam.c +++ b/sam.c @@ -1417,6 +1417,7 @@ static int extract(Vis *vis, Win *win, Command *cmd, const char *argv[], Selecti if (match[0].start == match[0].end) { if (last_start == match[0].start) { start++; + trailing_match = start == end; continue; } /* in Plan 9's regexp library ^ matches the beginning @@ -1429,8 +1430,7 @@ static int extract(Vis *vis, Win *win, Command *cmd, const char *argv[], Selecti break; } start = match[0].end; - if (start == end) - trailing_match = true; + trailing_match = start == end; } else { if (argv[0][0] == 'y') r = text_range_new(start, end); -- cgit v1.2.3