diff options
-rw-r--r-- | src/libregexp/regexec.c | 2 | ||||
-rw-r--r-- | src/libregexp/rregexec.c | 19 |
2 files changed, 10 insertions, 11 deletions
diff --git a/src/libregexp/regexec.c b/src/libregexp/regexec.c index 62ab1a31..a00fbcbc 100644 --- a/src/libregexp/regexec.c +++ b/src/libregexp/regexec.c @@ -58,7 +58,7 @@ regexec1(Reprog *progp, /* program to run */ p = utfrune(s, '\n'); if(p == 0 || s == j->eol) return match; - s = p; + s = p+1; break; } } diff --git a/src/libregexp/rregexec.c b/src/libregexp/rregexec.c index eece0eb9..4312c4f9 100644 --- a/src/libregexp/rregexec.c +++ b/src/libregexp/rregexec.c @@ -25,6 +25,7 @@ rregexec1(Reprog *progp, /* program to run */ Relist* tle; /* ends of this and next list */ Relist* nle; int match; + Rune *p; match = 0; checkstart = j->startchar; @@ -44,20 +45,18 @@ rregexec1(Reprog *progp, /* program to run */ if(checkstart) { switch(j->starttype) { case RUNE: - while(*s != j->startchar) { - if(*s == 0 || s == j->reol) - return match; - s++; - } + p = runestrchr(s, j->startchar); + if(p == 0 || p == j->eol) + return match; + s = p; break; case BOL: if(s == bol) break; - while(*s != '\n') { - if(*s == 0 || s == j->reol) - return match; - s++; - } + p = runestrchr(s, '\n'); + if(p == 0 || s == j->reol) + return match; + s = p+1; break; } } |