]> git.vpit.fr Git - perl/modules/indirect.git/blobdiff - indirect.xs
Stop leaking the package name passed to the hook
[perl/modules/indirect.git] / indirect.xs
index b9314ae60a2e92298ff50c63a2c8029373f93a5c..896ae7f591338b40e75a0d06e33940aea9af135c 100644 (file)
@@ -256,7 +256,7 @@ STATIC U32 indirect_hash = 0;
 STATIC SV *indirect_hint(pTHX) {
 #define indirect_hint() indirect_hint(aTHX)
  SV *id;
-#if I_HAS_PERL(5, 10, 0)
+#if I_HAS_PERL(5, 9, 5)
  id = Perl_refcounted_he_fetch(aTHX_ PL_curcop->cop_hints_hash,
                                      NULL,
                                      __PACKAGE__, __PACKAGE_LEN__,
@@ -516,24 +516,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);