summaryrefslogtreecommitdiffstats
path: root/Stash.xs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2010-11-13 14:16:24 -0600
committerJesse Luehrs <doy@tozt.net>2010-11-13 14:16:24 -0600
commit02b4c37321487aa6ec55f8d5d83a60fa19babe0b (patch)
tree4123225bd921b80f48f1be91ada23c6624d8cd83 /Stash.xs
parentc86a163084d5a5fd5182c2523a07d52388a4c672 (diff)
downloadpackage-stash-xs-02b4c37321487aa6ec55f8d5d83a60fa19babe0b.tar.gz
package-stash-xs-02b4c37321487aa6ec55f8d5d83a60fa19babe0b.zip
wooo magical
Diffstat (limited to 'Stash.xs')
-rw-r--r--Stash.xs9
1 files changed, 9 insertions, 0 deletions
diff --git a/Stash.xs b/Stash.xs
index 12931d6..532db0d 100644
--- a/Stash.xs
+++ b/Stash.xs
@@ -402,18 +402,25 @@ add_package_symbol(self, variable, initial=NULL, ...)
case VAR_SCALAR:
SvREFCNT_dec(GvSV(glob));
GvSV(glob) = val;
+ GvIMPORTED_SV_on(glob);
break;
case VAR_ARRAY:
SvREFCNT_dec(GvAV(glob));
GvAV(glob) = (AV*)val;
+ GvIMPORTED_AV_on(glob);
break;
case VAR_HASH:
SvREFCNT_dec(GvHV(glob));
GvHV(glob) = (HV*)val;
+ GvIMPORTED_HV_on(glob);
break;
case VAR_CODE:
SvREFCNT_dec(GvCV(glob));
GvCV(glob) = (CV*)val;
+ GvIMPORTED_CV_on(glob);
+ GvASSUMECV_on(glob);
+ GvCVGEN(glob) = 0;
+ mro_method_changed_in(GvSTASH(glob));
break;
case VAR_IO:
SvREFCNT_dec(GvIO(glob));
@@ -525,6 +532,8 @@ remove_package_symbol(self, variable)
break;
case VAR_CODE:
GvCV(glob) = (CV *)NULL;
+ GvCVGEN(glob) = 0;
+ mro_method_changed_in(GvSTASH(glob));
break;
case VAR_IO:
GvIOp(glob) = (IO *)NULL;