mro status, etc
Brandon Black [Wed, 25 Apr 2007 18:37:21 +0000 (13:37 -0500)]
From: "Brandon Black" <blblack@gmail.com>
Message-ID: <84621a60704251637v1f4a3f84y19b39461166e3631@mail.gmail.com>

p4raw-id: //depot/perl@31087

mro.c

diff --git a/mro.c b/mro.c
index ac872ec..5c1a970 100644 (file)
--- a/mro.c
+++ b/mro.c
@@ -483,7 +483,10 @@ Perl_mro_isa_changed_in(pTHX_ HV* stash)
         while((iter = hv_iternext(isarev))) {
             SV* revkey = hv_iterkeysv(iter);
             HV* revstash = gv_stashsv(revkey, 0);
-            struct mro_meta* revmeta = HvMROMETA(revstash);
+            struct mro_meta* revmeta;
+
+            if(!revstash) continue;
+            revmeta = HvMROMETA(revstash);
             SvREFCNT_dec((SV*)revmeta->mro_linear_dfs);
             SvREFCNT_dec((SV*)revmeta->mro_linear_c3);
             revmeta->mro_linear_dfs = NULL;
@@ -597,7 +600,10 @@ Perl_mro_method_changed_in(pTHX_ HV *stash)
         while((iter = hv_iternext(isarev))) {
             SV* revkey = hv_iterkeysv(iter);
             HV* revstash = gv_stashsv(revkey, 0);
-            struct mro_meta* mrometa = HvMROMETA(revstash);
+            struct mro_meta* mrometa;
+
+            if(!revstash) continue;
+            mrometa = HvMROMETA(revstash);
             mrometa->sub_generation++;
             if(mrometa->mro_nextmethod)
                 hv_clear(mrometa->mro_nextmethod);