]> git.vpit.fr Git - perl/modules/Scope-Upper.git/commitdiff
fix unwind()
authorDavid Mitchell <davem@iabyn.com>
Mon, 16 May 2016 13:52:07 +0000 (14:52 +0100)
committerVincent Pit <perl@profvince.com>
Mon, 30 May 2016 12:35:44 +0000 (14:35 +0200)
Perl 5.23.4 debugging builds added asserts to POPMARK etc that nothing
was underflowing etc. At this point 52-unwind-context.t started failing
with

    Perl_pp_return: Assertion `((my_perl->Imarkstack_ptr) >
    (my_perl->Imarkstack)) || !"MARK underflow"' failed.

Properly pushing a new mark for pp_return to pop rather than doing it
manually seems to fix this.

Upper.xs

index 34edf0476779027249b7676e01f88ed62bcbde61..f6e678d405a2c4a5f493a428557db5572f10df44 100644 (file)
--- a/Upper.xs
+++ b/Upper.xs
@@ -1361,7 +1361,7 @@ static void su_unwind(pTHX_ void *ud_) {
   dounwind(cxix);
 
  mark = PL_markstack[cxstack[cxix].blk_oldmarksp];
*PL_markstack_ptr = PL_stack_sp - PL_stack_base - items;
PUSHMARK(PL_stack_sp - items);
 
  XSH_D({
   I32 gimme = GIMME_V;