From: Dave Mitchell Date: Wed, 20 Aug 2003 20:44:53 +0000 (+0100) Subject: Re: untieing your victim during the act X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=58f82c5ce8b2d8cb469c0b41ae0ab2e192854d6f;p=p5sagit%2Fp5-mst-13.2.git Re: untieing your victim during the act Message-ID: <20030820194453.GD27719@fdgroup.com> p4raw-id: //depot/perl@20793 --- diff --git a/mg.c b/mg.c index 6f92bb5..8a40a76 100644 --- a/mg.c +++ b/mg.c @@ -139,6 +139,10 @@ Perl_mg_get(pTHX_ SV *sv) if (SvTYPE(sv) == SVTYPEMASK) { Perl_croak(aTHX_ "Tied variable freed while still in use"); } + /* guard against magic having been deleted - eg FETCH calling + * untie */ + if (!SvMAGIC(sv)) + break; /* Don't restore the flags for this entry if it was deleted. */ if (mg->mg_flags & MGf_GSKIP) @@ -1459,9 +1463,9 @@ S_magic_methpack(pTHX_ SV *sv, MAGIC *mg, char *meth) int Perl_magic_getpack(pTHX_ SV *sv, MAGIC *mg) { - magic_methpack(sv,mg,"FETCH"); if (mg->mg_ptr) mg->mg_flags |= MGf_GSKIP; + magic_methpack(sv,mg,"FETCH"); return 0; }