PERL_UNUSED_VAR(ud_);
PL_stack_sp = MY_CXT.unwind_storage.savesp;
+#if SU_HAS_PERL(5, 19, 4)
+ {
+ I32 i;
+ SV **sp = PL_stack_sp;
+ for (i = -items + 1; i <= 0; ++i)
+ if (!SvTEMP(sp[i]))
+ sv_2mortal(SvREFCNT_inc(sp[i]));
+ }
+#endif
if (cxstack_ix > cxix)
dounwind(cxix);
}
PL_stack_sp = MY_CXT.yield_storage.savesp;
+#if SU_HAS_PERL(5, 19, 4)
+ {
+ I32 i;
+ SV **sp = PL_stack_sp;
+ for (i = -items + 1; i <= 0; ++i)
+ if (!SvTEMP(sp[i]))
+ sv_2mortal(SvREFCNT_inc(sp[i]));
+ }
+#endif
if (cxstack_ix > cxix)
dounwind(cxix);
cx = cxstack + cxix;
dbcx = cx;
if (PL_DBsub && cxix && (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)) {
- I32 i = su_context_skip_db(cxix - 1) + 1;;
+ I32 i = su_context_skip_db(cxix - 1) + 1;
if (i < cxix && CxTYPE(cxstack + i) == CXt_SUB)
cx = cxstack + i;
}
if (PL_dowarn & G_WARN_ON)
goto context_info_warnings_on;
else
+#if SU_HAS_PERL(5, 17, 4)
+ mask = &PL_sv_undef;
+#else
goto context_info_warnings_off;
+#endif
} else if (old_warnings == pWARN_NONE) {
context_info_warnings_off:
mask = su_newmortal_pvn(WARN_NONEstring, WARNsize);
} else if (old_warnings == pWARN_ALL) {
HV *bits;
context_info_warnings_on:
+#if SU_HAS_PERL(5, 8, 7)
bits = get_hv("warnings::Bits", 0);
if (bits) {
SV **bits_all = hv_fetchs(bits, "all", FALSE);
if (bits_all)
mask = sv_mortalcopy(*bits_all);
}
+#endif
if (!mask)
mask = su_newmortal_pvn(WARN_ALLstring, WARNsize);
} else {