integrate change#2053 from maint-5.005
Gurusamy Sarathy [Sun, 25 Oct 1998 05:40:40 +0000 (05:40 +0000)]
p4raw-link: @2053 on //depot/maint-5.005/perl: 2c3f7d309175811e431d5baa7695e7610e2fa584

p4raw-id: //depot/perl@2057
p4raw-integrated: from //depot/maint-5.005/perl@2056 'copy in'
t/cmd/while.t (@1649..) 'merge in' cop.h (@1649..)

cop.h
t/cmd/while.t

diff --git a/cop.h b/cop.h
index 98ae91f..1aa21d5 100644 (file)
--- a/cop.h
+++ b/cop.h
@@ -206,7 +206,8 @@ struct block {
        PL_stack_sp      = PL_stack_base + cx->blk_oldsp,                       \
        PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp,            \
        PL_scopestack_ix = cx->blk_oldscopesp,                          \
-       PL_retstack_ix   = cx->blk_oldretsp
+       PL_retstack_ix   = cx->blk_oldretsp,                            \
+       PL_curpm         = cx->blk_oldpm
 
 /* substitution context */
 struct subst {
index c6e464d..392c137 100755 (executable)
@@ -2,7 +2,7 @@
 
 # $RCSfile: while.t,v $$Revision: 4.1 $$Date: 92/08/07 18:27:15 $
 
-print "1..10\n";
+print "1..15\n";
 
 open (tmp,'>Cmd_while.tmp') || die "Can't create Cmd_while.tmp.";
 print tmp "tvi925\n";
@@ -109,3 +109,22 @@ $i = 9;
     $i++;
 }
 print "ok $i\n";
+
+# Check curpm is reset when jumping out of a scope
+'abc' =~ /b/;
+WHILE:
+while (1) {
+  $i++;
+  print "#$`,$&,$',\nnot " unless $` . $& . $' eq "abc";
+  print "ok $i\n";
+  {                             # Localize changes to $` and friends
+    'end' =~ /end/;
+    redo WHILE if $i == 11;
+    next WHILE if $i == 12;
+    # 13 do a normal loop
+    last WHILE if $i == 14;
+  }
+}
+$i++;
+print "not " unless $` . $& . $' eq "abc";
+print "ok $i\n";