summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2010-11-12 16:59:47 -0600
committerJesse Luehrs <doy@tozt.net>2010-11-12 16:59:47 -0600
commitb55c97c24c906e671bb6c7b50bec64889b80f155 (patch)
treea9910b3d97dce9ac3d696e5d0fe026d1317a27ad
parent4871b1a089d2ccfc436fb1891f8186a4c80bbc06 (diff)
downloadpackage-stash-xs-b55c97c24c906e671bb6c7b50bec64889b80f155.tar.gz
package-stash-xs-b55c97c24c906e671bb6c7b50bec64889b80f155.zip
fix a bug with @ISA that cmop triggers
-rw-r--r--Stash.xs8
1 files changed, 3 insertions, 5 deletions
diff --git a/Stash.xs b/Stash.xs
index ce062ba..76c7eed 100644
--- a/Stash.xs
+++ b/Stash.xs
@@ -209,16 +209,14 @@ SV *_get_package_symbol(SV *self, varspec_t *variable, int vivify)
glob = (GV*)(*entry);
if (!isGV(glob)) {
SV *namesv;
- char *name;
- STRLEN len;
namesv = newSVsv(_get_name(self));
sv_catpvs(namesv, "::");
sv_catpv(namesv, variable->name);
- name = SvPV(namesv, len);
-
- gv_init(glob, namespace, name, len, 1);
+ /* can't use gv_init here, because it screws up @ISA in a way that I
+ * can't reproduce, but that CMOP triggers */
+ gv_fetchsv(namesv, GV_ADD, vartype_to_svtype(variable->type));
}
if (vivify) {