]> git.vpit.fr Git - perl/modules/Scope-Upper.git/commitdiff
Reset the correct mark after unwinding
authorVincent Pit <vince@profvince.com>
Sun, 11 Jan 2009 14:01:27 +0000 (15:01 +0100)
committerVincent Pit <vince@profvince.com>
Sun, 11 Jan 2009 14:01:27 +0000 (15:01 +0100)
Upper.xs

index 486c28b5ef4707f665e3e2d2752d2849c5d2de7f..53dd22f41af57ed9c7aa1c6734eb27532a1c9e21 100644 (file)
--- a/Upper.xs
+++ b/Upper.xs
@@ -527,7 +527,7 @@ STATIC void su_unwind(pTHX_ void *ud_) {
  OP fakeop;
  I32 cxix  = ud->cxix;
  I32 items = ud->items - 1;
- I32 gimme, mark = 0;
+ I32 gimme, mark;
 
  if (cxstack_ix > cxix)
   dounwind(cxix);
@@ -535,10 +535,9 @@ STATIC void su_unwind(pTHX_ void *ud_) {
  /* Hide the level */
  PL_stack_sp--;
 
- gimme = GIMME_V;
- if (cxix > 0)
-  mark = cxstack[cxix - 1].blk_oldsp;
+ mark = PL_markstack[cxstack[cxix].blk_oldmarksp];
 
+ gimme = GIMME_V;
  if (gimme == G_SCALAR) {
   *PL_markstack_ptr = PL_stack_sp - PL_stack_base;
   PL_stack_sp += items;