commit 54ad6d512bdd9b15553d9e1bd8be5c33e4561535
parent 78fd6ff239f4b2fd626a1484e61dfa0ba3a8bdfa
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Thu, 7 Jan 2016 11:37:56 +0100
Fix rematch()
Rematch() was incremnenting the last match always, even in the
cases when it was not matching anything. This patch detects
this situation and it updates it only when there is a match.
Diffstat:
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/ed.c b/ed.c
@@ -404,8 +404,13 @@ match(int num)
static int
rematch(int num)
{
- lastmatch += matchs[0].rm_eo;
- return !regexec(pattern, lastmatch, 10, matchs, 0);
+ regoff_t off = matchs[0].rm_eo;
+
+ if (!regexec(pattern, lastmatch + off, 10, matchs, 0)) {
+ lastmatch += off;
+ return 1;
+ }
+ return 0;
}
static int