diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2002-01-03 01:52:04 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2002-01-03 01:52:04 +0000 |
commit | 93c50829d83553b4361dbfd23cb665fcba82d307 (patch) | |
tree | 0c0091650a1b8e1b12a0d754ff81e560cc77a541 /regexec.c | |
parent | dab065ea9c8b629eb22b219d57901aa33df76f4f (diff) | |
download | perl-93c50829d83553b4361dbfd23cb665fcba82d307.tar.gz |
Off-by-one is my middle name.
p4raw-id: //depot/perl@14031
Diffstat (limited to 'regexec.c')
-rw-r--r-- | regexec.c | 13 |
1 files changed, 5 insertions, 8 deletions
@@ -960,7 +960,7 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *sta c1 = *(U8*)m; c2 = PL_fold_locale[c1]; do_exactf: - e = do_utf8 ? s + ln - 1 : strend - ln; + e = do_utf8 ? s + ln : strend - ln; if (norun && e < s) e = s; /* Due to minlen logic of intuit() */ @@ -980,16 +980,14 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *sta U8 tmpbuf [UTF8_MAXLEN+1]; U8 foldbuf[UTF8_MAXLEN_FOLD+1]; STRLEN len, foldlen; - char* se; if (c1 == c2) { while (s <= e) { c = utf8_to_uvchr((U8*)s, &len); if ( c == c1 && (ln == len || - ((se = e + 1) && - !ibcmp_utf8(s, &se, 0, do_utf8, - m, 0 , ln, UTF))) + ibcmp_utf8(s, 0 , 0, do_utf8, + m, 0 , ln, UTF)) && (norun || regtry(prog, s)) ) goto got_it; else { @@ -1025,9 +1023,8 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *sta if ( (c == c1 || c == c2) && (ln == len || - ((se = e + 1) && - !ibcmp_utf8(s, &se, 0, do_utf8, - m, 0, ln, UTF))) + ibcmp_utf8(s, 0, 0, do_utf8, + m, 0, ln, UTF)) && (norun || regtry(prog, s)) ) goto got_it; else { |