diff options
author | Brandon Black <blblack@gmail.com> | 2007-04-30 11:45:54 -0500 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2007-05-03 09:24:47 +0000 |
commit | 08aeb9f701fa786d490e79e99ac2f9f9de229da3 (patch) | |
tree | 0b85c35a860d553f5c560a72dc51b525224f3036 /mg.c | |
parent | 808cb88e26f50aa982b59730bcba3cf312610440 (diff) | |
download | perl-08aeb9f701fa786d490e79e99ac2f9f9de229da3.tar.gz |
Re: mro status, etc
From: "Brandon Black" <blblack@gmail.com>
Message-ID: <84621a60704301445y37e9b05ey235210a8e5547cc1@mail.gmail.com>
p4raw-id: //depot/perl@31122
Diffstat (limited to 'mg.c')
-rw-r--r-- | mg.c | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -1529,19 +1529,26 @@ int Perl_magic_setisa(pTHX_ SV *sv, MAGIC *mg) { dVAR; + HV* stash; PERL_UNUSED_ARG(sv); + /* Bail out if destruction is going on */ + if(PL_dirty) return 0; + /* The first case occurs via setisa, the second via setisa_elem, which calls this same magic */ - mro_isa_changed_in( - GvSTASH( - SvTYPE(mg->mg_obj) == SVt_PVGV - ? (GV*)mg->mg_obj - : (GV*)SvMAGIC(mg->mg_obj)->mg_obj - ) + stash = GvSTASH( + SvTYPE(mg->mg_obj) == SVt_PVGV + ? (GV*)mg->mg_obj + : (GV*)SvMAGIC(mg->mg_obj)->mg_obj ); + if(PL_delaymagic) + PL_delayedisa = stash; + else + mro_isa_changed_in(stash); + return 0; } |