summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2009-03-22 15:58:26 +0000
committerDavid Mitchell <davem@iabyn.com>2009-03-22 15:58:26 +0000
commitc966426a3bb6619c8372ea83168fa58260cf133b (patch)
tree8c8fe99315230a947ec9ab146db43933e8effcb3
parentac56ae2e858af2a770b8e1bbf5cc5d10917fbc46 (diff)
downloadperl-c966426a3bb6619c8372ea83168fa58260cf133b.tar.gz
fix [RT #60034]. An equivalent fix was already in 5.8.9 as change 34580.
-rw-r--r--regexec.c7
-rwxr-xr-xt/op/pat.t3
2 files changed, 5 insertions, 5 deletions
diff --git a/regexec.c b/regexec.c
index 58d973a80f..93fadab584 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 c1cb120ea1..88fbe5d9f8 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/,