X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=indirect.xs;h=206a991d4ac1039366952f709cb010f66256303e;hb=373b59daee04b09ec1b479fe45d87be11275fed7;hp=4f1deb4d69937ce96ffd5e372f2866101bc94fc5;hpb=a52a1238a67d43a290a7ed147254c7330ce4b96e;p=perl%2Fmodules%2Findirect.git diff --git a/indirect.xs b/indirect.xs index 4f1deb4..206a991 100644 --- a/indirect.xs +++ b/indirect.xs @@ -186,7 +186,6 @@ STATIC void indirect_thread_cleanup(pTHX_ void *); STATIC void indirect_thread_cleanup(pTHX_ void *ud) { int *level = ud; - SV *id; if (*level) { *level = 0; @@ -255,21 +254,21 @@ STATIC U32 indirect_hash = 0; STATIC SV *indirect_hint(pTHX) { #define indirect_hint() indirect_hint(aTHX) - SV *id; + SV *hint; #if I_HAS_PERL(5, 9, 5) - id = Perl_refcounted_he_fetch(aTHX_ PL_curcop->cop_hints_hash, - NULL, - __PACKAGE__, __PACKAGE_LEN__, - 0, - indirect_hash); + hint = Perl_refcounted_he_fetch(aTHX_ PL_curcop->cop_hints_hash, + NULL, + __PACKAGE__, __PACKAGE_LEN__, + 0, + indirect_hash); #else SV **val = hv_fetch(GvHV(PL_hintgv), __PACKAGE__, __PACKAGE_LEN__, indirect_hash); if (!val) return 0; - id = *val; + hint = *val; #endif - return (id && SvOK(id)) ? id : NULL; + return (hint && SvOK(hint)) ? hint : NULL; } /* ... op -> source position ............................................... */ @@ -516,24 +515,24 @@ STATIC OP *indirect_ck_entersub(pTHX_ OP *o) { if (mpos < opos) { SV *code = indirect_detag(hint); - if (hint) { + if (code) { SV *file; line_t line; dSP; + ENTER; + SAVETMPS; + onamesv = sv_mortalcopy(onamesv); mnamesv = sv_mortalcopy(mnamesv); #ifdef USE_ITHREADS - file = newSVpv(CopFILE(&PL_compiling), 0); + file = sv_2mortal(newSVpv(CopFILE(&PL_compiling), 0)); #else file = sv_mortalcopy(CopFILESV(&PL_compiling)); #endif line = CopLINE(&PL_compiling); - ENTER; - SAVETMPS; - PUSHMARK(SP); EXTEND(SP, 4); PUSHs(onamesv);