From: David Mitchell Date: Mon, 16 May 2016 13:52:07 +0000 (+0100) Subject: fix unwind() X-Git-Tag: rt112246^2~14 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FScope-Upper.git;a=commitdiff_plain;h=e7846e7f6fded4c4a3139054c5206c1480711867 fix unwind() 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. --- diff --git a/Upper.xs b/Upper.xs index 34edf04..f6e678d 100644 --- 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;