Re: [perl #25269] panic: pp_match start/end pointers in m/^(?=.*(a)).*(bc)/
authorHugo van der Sanden <hv@crypt.org>
Thu, 29 Jan 2004 15:12:12 +0000 (15:12 +0000)
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Thu, 29 Jan 2004 21:08:28 +0000 (21:08 +0000)
Message-Id: <200401291512.i0TFCCr23736@zen.crypt.org>

p4raw-id: //depot/perl@22245

pp_hot.c
t/op/pat.t

index 1874a14..1dffe94 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -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);
index 7757c40..2348c33 100755 (executable)
@@ -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