summaryrefslogtreecommitdiffstats
path: root/XS.xs
diff options
context:
space:
mode:
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);