Re: localising hash element by variable
[p5sagit/p5-mst-13.2.git] / scope.c
diff --git a/scope.c b/scope.c
index e38dedf..964a3b9 100644 (file)
--- a/scope.c
+++ b/scope.c
@@ -545,7 +545,7 @@ Perl_save_helem(pTHX_ HV *hv, SV *key, SV **sptr)
     SvGETMAGIC(*sptr);
     SSCHECK(4);
     SSPUSHPTR(SvREFCNT_inc_simple(hv));
-    SSPUSHPTR(SvREFCNT_inc_simple(key));
+    SSPUSHPTR(newSVsv(key));
     SSPUSHPTR(SvREFCNT_inc(*sptr));
     SSPUSHINT(SAVEt_HELEM);
     save_scalar_at(sptr);
@@ -749,8 +749,9 @@ Perl_leave_scope(pTHX_ I32 base)
            gv = (GV*)SSPOPPTR;
            gp_free(gv);
            GvGP(gv) = (GP*)ptr;
-           if (GvCVu(gv))
-                mro_method_changed_in(GvSTASH(gv)); /* putting a method back into circulation ("local")*/
+            /* putting a method back into circulation ("local")*/
+           if (GvCVu(gv) && (hv=GvSTASH(gv)) && HvNAME_get(hv))
+                mro_method_changed_in(hv);
            SvREFCNT_dec(gv);
            break;
        case SAVEt_FREESV: