From: David Mitchell Date: Sun, 22 Mar 2009 15:58:26 +0000 (+0000) Subject: fix [RT #60034]. An equivalent fix was already in 5.8.9 as change 34580. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=c966426a3bb6619c8372ea83168fa58260cf133b;p=p5sagit%2Fp5-mst-13.2.git fix [RT #60034]. An equivalent fix was already in 5.8.9 as change 34580. --- diff --git a/regexec.c b/regexec.c index 58d973a..93fadab 100644 --- a/regexec.c +++ b/regexec.c @@ -4478,8 +4478,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 */ diff --git a/t/op/pat.t b/t/op/pat.t index c1cb120..88fbe5d 100755 --- a/t/op/pat.t +++ b/t/op/pat.t @@ -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)+=/; } } @@ -4021,14 +4020,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/,