diff options
author | Hugo van der Sanden <hv@crypt.org> | 2004-01-29 15:12:12 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2004-01-29 21:08:28 +0000 |
commit | 289555fe151ab6b9c4f788fbf1bf5f04fe169ea7 (patch) | |
tree | 0d931070341b6e957d5dd5f33fff411db95c8049 | |
parent | e9a641f9d30a042680d0752d8a9ad83b38b401e4 (diff) | |
download | perl-289555fe151ab6b9c4f788fbf1bf5f04fe169ea7.tar.gz |
Re: [perl #25269] panic: pp_match start/end pointers in m/^(?=.*(a)).*(bc)/
Message-Id: <200401291512.i0TFCCr23736@zen.crypt.org>
p4raw-id: //depot/perl@22245
-rw-r--r-- | pp_hot.c | 2 | ||||
-rwxr-xr-x | t/op/pat.t | 10 |
2 files changed, 9 insertions, 3 deletions
@@ -1312,10 +1312,10 @@ play_it_again: /*SUPPRESS 560*/ if ((rx->startp[i] != -1) && rx->endp[i] != -1 ) { len = rx->endp[i] - rx->startp[i]; + s = rx->startp[i] + truebase; if (rx->endp[i] < 0 || rx->startp[i] < 0 || len < 0 || len > strend - s) DIE(aTHX_ "panic: pp_match start/end pointers"); - s = rx->startp[i] + truebase; sv_setpvn(*SP, s, len); if (DO_UTF8(TARG) && is_utf8_string((U8*)s, len)) SvUTF8_on(*SP); diff --git a/t/op/pat.t b/t/op/pat.t index 7757c40236..2348c33b21 100755 --- a/t/op/pat.t +++ b/t/op/pat.t @@ -6,7 +6,7 @@ $| = 1; -print "1..1055\n"; +print "1..1056\n"; BEGIN { chdir 't' if -d 't'; @@ -3262,5 +3262,11 @@ for (120 .. 130) { } } -# last test 1055 +# perl #25269: panic: pp_match start/end pointers +ok("a-bc" eq eval { + my($x, $y) = "bca" =~ /^(?=.*(a)).*(bc)/; + "$x-$y"; +}, 'captures can move backwards in string'); + +# last test 1056 |