ud, 24, ' ', mark, base));
if (base < mark) {
+#if SU_HAS_PERL(5, 19, 4)
+ I32 save = -1;
+ PERL_CONTEXT *cx;
+#endif
+
SU_D(PerlIO_printf(Perl_debug_log, "%p: clear leftovers\n", ud));
+
+#if SU_HAS_PERL(5, 19, 4)
+ cx = cxstack + cxstack_ix;
+ if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
+ save = PL_scopestack[cx->blk_oldscopesp - 1];
+#endif
+
PL_savestack_ix = mark;
leave_scope(base);
+
+#if SU_HAS_PERL(5, 19, 4)
+ if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
+ PL_scopestack[cx->blk_oldscopesp - 1] = save;
+#endif
}
PL_savestack_ix = base;
/* --- Global setup/teardown ----------------------------------------------- */
-static U32 su_initialized = 0;
+static VOL U32 su_initialized = 0;
static void su_global_teardown(pTHX_ void *root) {
if (!su_initialized)