fix [RT #60034]. An equivalent fix was already in 5.8.9 as change 34580.
authorDavid Mitchell <davem@iabyn.com>
Sun, 22 Mar 2009 15:58:26 +0000 (15:58 +0000)
committerDavid Mitchell <davem@iabyn.com>
Sat, 18 Apr 2009 14:21:57 +0000 (15:21 +0100)
(cherry picked from commit c966426a3bb6619c8372ea83168fa58260cf133b)

regexec.c
t/op/pat.t

index 09ac2ee..b3c8ff2 100644 (file)
--- a/regexec.c
+++ b/regexec.c
@@ -4430,8 +4430,11 @@ NULL
                cur_eval->u.eval.close_paren == (U32)ST.me->flags) 
                goto fake_end;
                
-           if ( ST.count < (ST.minmod ? ARG1(ST.me) : ARG2(ST.me)) )
-               goto curlym_do_A; /* try to match another A */
+           {
+               I32 max = (ST.minmod ? ARG1(ST.me) : ARG2(ST.me));
+               if ( max == REG_INFTY || ST.count < max )
+                   goto curlym_do_A; /* try to match another A */
+           }
            goto curlym_do_B; /* try to match B */
 
        case CURLYM_A_fail: /* just failed to match an A */
index 77209f2..ab0d86f 100755 (executable)
@@ -494,7 +494,6 @@ sub run_tests {
             nok "b$a="  =~ /a$a=/;
              ok "b$a="  =~ /ba+=/;
 
-            local $TODO = "See bug 60464" if $l > 32767;
              ok "ba$a=" =~ /b(?:a|b)+=/;
         }
     }
@@ -4023,14 +4022,12 @@ sub run_tests {
 
     {
         local $BugId =  '60034';
-        local $TODO  = "See bug 60034";
         my $a = "xyzt" x 8192;
         ok $a =~ /\A(?>[a-z])*\z/,
                 '(?>) does not cause wrongness on long string';
         my $b = $a . chr 256;
         chop $b;
         {
-            local $TODO;
             iseq $a, $b;
         }
         ok $b =~ /\A(?>[a-z])*\z/,