X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FScope-Upper.git;a=blobdiff_plain;f=Upper.xs;h=928fdfd28295a098bdf1fc69cbcf065d787d70df;hp=18ba9865e1190227a595e2e511bcedbd1935f6a1;hb=f5baf3c7bce8c08d6475fdcdb20fe23798f5cd8b;hpb=502b805d3cf36b88e13f5010061260cef2c797e4 diff --git a/Upper.xs b/Upper.xs index 18ba986..928fdfd 100644 --- a/Upper.xs +++ b/Upper.xs @@ -2872,7 +2872,9 @@ CODE: cxix = su_context_normalize_down(cxix); Newx(ud, 1, su_ud_reap); SU_UD_TYPE(ud) = SU_UD_TYPE_REAP; - ud->cb = newSVsv(hook); + ud->cb = (SvROK(hook) && SvTYPE(SvRV(hook)) >= SVt_PVCV) + ? SvRV(hook) : hook; + SvREFCNT_inc_simple_void(ud->cb); su_init(ud, cxix, SU_SAVE_DESTRUCTOR_SIZE); void