X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FVariable-Magic.git;a=blobdiff_plain;f=Magic.xs;h=5ca81e35766050b99b966877a513d6eb32420903;hp=61bc9e092aa5191959e39662a7c83e332528c444;hb=561734f7d9ced589e9336a805b83294f903bdd2a;hpb=aae88f4cf6f2f32553f8cc29cb8f0792cb5cd910 diff --git a/Magic.xs b/Magic.xs index 61bc9e0..5ca81e3 100644 --- a/Magic.xs +++ b/Magic.xs @@ -1375,8 +1375,8 @@ STATIC OP *vmg_pp_propagate_errsv(pTHX) { SVOP *o = cSVOPx(PL_op); if (o->op_sv) { - SvREFCNT_dec(ERRSV); - ERRSV = o->op_sv; + sv_setsv(ERRSV, o->op_sv); + SvREFCNT_dec(o->op_sv); o->op_sv = NULL; } @@ -1386,11 +1386,8 @@ STATIC OP *vmg_pp_propagate_errsv(pTHX) { #endif /* VMG_PROPAGATE_ERRSV_NEEDS_TRAMPOLINE */ STATIC int vmg_propagate_errsv_free(pTHX_ SV *sv, MAGIC *mg) { - if (mg->mg_obj) { - ERRSV = mg->mg_obj; - mg->mg_obj = NULL; - mg->mg_flags &= ~MGf_REFCOUNTED; - } + if (mg->mg_obj) + sv_setsv(ERRSV, mg->mg_obj); return 0; }