summaryrefslogtreecommitdiffstats
path: root/XS.xs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-01-04 03:31:08 -0600
committerJesse Luehrs <doy@tozt.net>2013-01-04 03:31:08 -0600
commitf45cb9594759421f8d95e3974ba79efbd1fa0621 (patch)
treeff7c85e418fd05baa8ed42eab701c2d5b11b35ea /XS.xs
parent9c88b95a5ffba3dbcf9a416f659ad39dd4016367 (diff)
downloadpackage-stash-xs-f45cb9594759421f8d95e3974ba79efbd1fa0621.tar.gz
package-stash-xs-f45cb9594759421f8d95e3974ba79efbd1fa0621.zip
fix the ::ISA::CACHE:: thing here too
Diffstat (limited to 'XS.xs')
-rw-r--r--XS.xs19
1 files changed, 19 insertions, 0 deletions
diff --git a/XS.xs b/XS.xs
index 59e2254..2795b81 100644
--- a/XS.xs
+++ b/XS.xs
@@ -837,6 +837,14 @@ list_all_symbols(self, vartype=VAR_NONE)
keys = hv_iterinit(namespace);
EXTEND(SP, keys);
while ((entry = hv_iternext(namespace))) {
+#if PERL_VERSION < 10
+ char *pv;
+ STRLEN len;
+ pv = HePV(entry, len);
+ if (strnEQ(entry, "::ISA::CACHE::", len)) {
+ continue;
+ }
+#endif
mPUSHs(newSVhe(entry));
}
}
@@ -850,6 +858,11 @@ list_all_symbols(self, vartype=VAR_NONE)
hv_iterinit(namespace);
while ((val = hv_iternextsv(namespace, &key, &len))) {
GV *gv = (GV*)val;
+#if PERL_VERSION < 10
+ if (vartype == VAR_SCALAR && strnEQ(key, "::ISA::CACHE::", len)) {
+ continue;
+ }
+#endif
if (isGV(gv)) {
switch (vartype) {
case VAR_SCALAR:
@@ -898,6 +911,12 @@ get_all_symbols(self, vartype=VAR_NONE)
hv_iterinit(namespace);
while ((val = hv_iternextsv(namespace, &key, &len))) {
GV *gv = (GV*)val;
+#if PERL_VERSION < 10
+ if ((vartype == VAR_SCALAR || vartype == VAR_NONE)
+ && strnEQ(key, "::ISA::CACHE::", len)) {
+ continue;
+ }
+#endif
if (!isGV(gv)) {
SV *keysv = newSVpvn(key, len);