don't call mro_method_changed_in on anon stashes
[gitmo/Package-Stash-XS.git] / XS.xs
diff --git a/XS.xs b/XS.xs
index 87802d8..d3ce6aa 100644 (file)
--- a/XS.xs
+++ b/XS.xs
         GvASSUMECV_on(g);               \
     }                                   \
     GvCVGEN(g) = 0;                     \
-    mro_method_changed_in(GvSTASH(g));  \
+    if (HvENAME_get(GvSTASH(g)))        \
+        mro_method_changed_in(GvSTASH(g)); \
 } while (0)
 #define GvSetIO(g,v) do {               \
     SvREFCNT_dec(GvIO(g));              \
@@ -582,8 +583,11 @@ add_symbol(self, variable, initial=NULL, ...)
         glob = (GV*)HeVAL(entry);
     }
     else {
+        char *varname_pv;
+        STRLEN varname_len;
         glob = (GV*)newSV(0);
-        gv_init(glob, namespace, "ANON", 4, 1);
+        varname_pv = SvPV(variable.name, varname_len);
+        gv_init(glob, namespace, varname_pv, varname_len, 1);
         if (!hv_store_ent(namespace, variable.name, (SV*)glob, 0)) {
             croak("hv_store failed");
         }