AUTHORS updates.
[p5sagit/p5-mst-13.2.git] / regexec.c
index f196cb7..4f403a0 100644 (file)
--- a/regexec.c
+++ b/regexec.c
@@ -3990,7 +3990,9 @@ S_regrepeat(pTHX_ regnode *p, I32 max)
     register bool do_utf8 = PL_reg_match_utf8;
 
     scan = PL_reginput;
-    if (max != REG_INFTY && max < loceol - scan)
+    if (max == REG_INFTY)
+       max = I32_MAX;
+    else if (max < loceol - scan)
       loceol = scan + max;
     switch (OP(p)) {
     case REG_ANY:
@@ -4328,12 +4330,13 @@ S_reginclass(pTHX_ register regnode *n, register U8* p, STRLEN* lenp, register b
 {
     char flags = ANYOF_FLAGS(n);
     bool match = FALSE;
-    UV c;
+    UV c = *p;
     STRLEN len = 0;
     STRLEN plen;
 
-    c = do_utf8 ? utf8n_to_uvchr(p, UTF8_MAXLEN, &len,
-                                ckWARN(WARN_UTF8) ? 0 : UTF8_ALLOW_ANY) : *p;
+    if (do_utf8 && !UTF8_IS_INVARIANT(c))
+        c = utf8n_to_uvchr(p, UTF8_MAXLEN, &len,
+                           ckWARN(WARN_UTF8) ? 0 : UTF8_ALLOW_ANY);
 
     plen = lenp ? *lenp : UNISKIP(NATIVE_TO_UNI(c));
     if (do_utf8 || (flags & ANYOF_UNICODE)) {