summaryrefslogtreecommitdiffstats
path: root/XS.xs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2011-03-04 13:06:43 -0600
committerJesse Luehrs <doy@tozt.net>2011-03-04 13:06:43 -0600
commit7c3b261c80f79042f3867cd99c5ba096987886bd (patch)
tree8c1449df7120dde0044a60805d551e687c30b5be /XS.xs
parent2d077165dd9e3c743f4aec00953d6914655fb462 (diff)
downloadpackage-stash-xs-7c3b261c80f79042f3867cd99c5ba096987886bd.tar.gz
package-stash-xs-7c3b261c80f79042f3867cd99c5ba096987886bd.zip
disable caching of the namespace on 5.8
Diffstat (limited to 'XS.xs')
-rw-r--r--XS.xs8
1 files changed, 7 insertions, 1 deletions
diff --git a/XS.xs b/XS.xs
index 73ca16f..a36fd67 100644
--- a/XS.xs
+++ b/XS.xs
@@ -385,16 +385,21 @@ namespace(self)
SV *self
PREINIT:
HE *slot;
+ SV *package_name;
CODE:
if (!sv_isobject(self))
croak("Can't call namespace as a class method");
+#if PERL_VERSION < 10
+ package_name = _get_name(self);
+ RETVAL = newRV_inc((SV*)gv_stashpv(SvPV_nolen(package_name), GV_ADD));
+#else
slot = hv_fetch_ent((HV*)SvRV(self), namespace_key, 0, namespace_hash);
if (slot) {
RETVAL = SvREFCNT_inc_simple_NN(HeVAL(slot));
}
else {
HV *namespace;
- SV *nsref, *package_name;
+ SV *nsref;
package_name = _get_name(self);
namespace = gv_stashpv(SvPV_nolen(package_name), GV_ADD);
@@ -407,6 +412,7 @@ namespace(self)
}
RETVAL = SvREFCNT_inc_simple_NN(nsref);
}
+#endif
OUTPUT:
RETVAL