X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=regexec.c;h=d19b82ea5a613ea6f0086e8485392b7278aa12ef;hb=6cd63c21c135f707c2046a8512b70b74c3e1000c;hp=6a644d978aa6bcede1c9aac86ee579fa9235b896;hpb=890ce7af62ab97fd07b5b49562f13e94286469fb;p=p5sagit%2Fp5-mst-13.2.git diff --git a/regexec.c b/regexec.c index 6a644d9..d19b82e 100644 --- a/regexec.c +++ b/regexec.c @@ -1039,14 +1039,15 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, const char *strend, I32 U8 *sm = (U8 *) m; U8 tmpbuf1[UTF8_MAXBYTES_CASE+1]; U8 tmpbuf2[UTF8_MAXBYTES_CASE+1]; + const U32 uniflags = ckWARN(WARN_UTF8) ? 0 : UTF8_ALLOW_ANY; to_utf8_lower((U8*)m, tmpbuf1, &ulen1); to_utf8_upper((U8*)m, tmpbuf2, &ulen2); c1 = utf8n_to_uvchr(tmpbuf1, UTF8_MAXBYTES_CASE, - 0, ckWARN(WARN_UTF8) ? 0 : UTF8_ALLOW_ANY); + 0, uniflags); c2 = utf8n_to_uvchr(tmpbuf2, UTF8_MAXBYTES_CASE, - 0, ckWARN(WARN_UTF8) ? 0 : UTF8_ALLOW_ANY); + 0, uniflags); lnc = 0; while (sm < ((U8 *) m + ln)) { lnc++; @@ -1085,14 +1086,13 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, const char *strend, I32 UV c, f; U8 tmpbuf [UTF8_MAXBYTES+1]; STRLEN len, foldlen; - + const U32 uniflags = ckWARN(WARN_UTF8) ? 0 : UTF8_ALLOW_ANY; if (c1 == c2) { /* Upper and lower of 1st char are equal - * probably not a "letter". */ while (s <= e) { c = utf8n_to_uvchr((U8*)s, UTF8_MAXBYTES, &len, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY); + uniflags); if ( c == c1 && (ln == len || ibcmp_utf8(s, (char **)0, 0, do_utf8, @@ -1119,8 +1119,7 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, const char *strend, I32 else { while (s <= e) { c = utf8n_to_uvchr((U8*)s, UTF8_MAXBYTES, &len, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY); + uniflags); /* Handle some of the three Greek sigmas cases. * Note that not all the possible combinations @@ -2416,6 +2415,7 @@ S_regmatch(pTHX_ regnode *prog) SV *re_debug_flags = NULL; #endif + U32 uniflags = ckWARN(WARN_UTF8) ? 0 : UTF8_ALLOW_ANY; GET_RE_DEBUG_FLAGS; @@ -2583,8 +2583,6 @@ S_regmatch(pTHX_ regnode *prog) case TRIEF: case TRIEFL: { - - const U32 uniflags = ckWARN( WARN_UTF8 ) ? 0 : UTF8_ALLOW_ANY; U8 *uc = ( U8* )locinput; U32 state = 1; U16 charid = 0; @@ -2652,7 +2650,6 @@ S_regmatch(pTHX_ regnode *prog) from previous if blocks */ case TRIE: { - const U32 uniflags = ckWARN( WARN_UTF8 ) ? 0 : UTF8_ALLOW_ANY; U8 *uc = (U8*)locinput; U32 state = 1; U16 charid = 0; @@ -2808,8 +2805,7 @@ S_regmatch(pTHX_ regnode *prog) sayNO; if (NATIVE_TO_UNI(*(U8*)s) != utf8n_to_uvuni((U8*)l, UTF8_MAXBYTES, &ulen, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY)) + uniflags)) sayNO; l += ulen; s ++; @@ -2823,8 +2819,7 @@ S_regmatch(pTHX_ regnode *prog) sayNO; if (NATIVE_TO_UNI(*((U8*)l)) != utf8n_to_uvuni((U8*)s, UTF8_MAXBYTES, &ulen, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY)) + uniflags)) sayNO; s += ulen; l ++; @@ -3941,16 +3936,13 @@ S_regmatch(pTHX_ regnode *prog) to_utf8_upper((U8*)s, tmpbuf2, &ulen2); c1 = utf8n_to_uvuni(tmpbuf1, UTF8_MAXBYTES, 0, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY); + uniflags); c2 = utf8n_to_uvuni(tmpbuf2, UTF8_MAXBYTES, 0, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY); + uniflags); } else { c2 = c1 = utf8n_to_uvchr(s, UTF8_MAXBYTES, 0, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY); + uniflags); } } } @@ -4011,8 +4003,7 @@ S_regmatch(pTHX_ regnode *prog) while (locinput <= e && utf8n_to_uvchr((U8*)locinput, UTF8_MAXBYTES, &len, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY) != (UV)c1) { + uniflags) != (UV)c1) { locinput += len; count++; } @@ -4023,8 +4014,7 @@ S_regmatch(pTHX_ regnode *prog) while (locinput <= e) { UV c = utf8n_to_uvchr((U8*)locinput, UTF8_MAXBYTES, &len, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY); + uniflags); if (c == (UV)c1 || c == (UV)c2) break; locinput += len; @@ -4060,8 +4050,7 @@ S_regmatch(pTHX_ regnode *prog) if (do_utf8) c = utf8n_to_uvchr((U8*)PL_reginput, UTF8_MAXBYTES, 0, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY); + uniflags); else c = UCHARAT(PL_reginput); /* If it could work, try it. */ @@ -4110,8 +4099,7 @@ S_regmatch(pTHX_ regnode *prog) if (do_utf8) c = utf8n_to_uvchr((U8*)PL_reginput, UTF8_MAXBYTES, 0, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY); + uniflags); else c = UCHARAT(PL_reginput); } @@ -4133,8 +4121,7 @@ S_regmatch(pTHX_ regnode *prog) if (do_utf8) c = utf8n_to_uvchr((U8*)PL_reginput, UTF8_MAXBYTES, 0, - ckWARN(WARN_UTF8) ? - 0 : UTF8_ALLOW_ANY); + uniflags); else c = UCHARAT(PL_reginput); } @@ -4673,7 +4660,7 @@ Perl_regclass_swash(pTHX_ register const regnode* node, bool doinit, SV** listsv if (PL_regdata->what[n] == 's') { SV * const rv = (SV*)PL_regdata->data[n]; AV * const av = (AV*)SvRV((SV*)rv); - SV **ary = AvARRAY(av); + SV **const ary = AvARRAY(av); SV **a, **b; /* See the end of regcomp.c:S_reglass() for