summaryrefslogtreecommitdiff
path: root/ext/Devel-Peek
diff options
context:
space:
mode:
authorYves Orton <demerphq@gmail.com>2010-08-25 20:05:58 +0200
committerYves Orton <demerphq@gmail.com>2010-08-25 20:06:21 +0200
commitd7d51f4b6ba689e611fef778b3f5d12981e872ba (patch)
tree52e67539e1c0a45573b3ed6293cd3cb664281183 /ext/Devel-Peek
parentb0c6325e9e0a1de42f208a0e41705cc75eb71433 (diff)
downloadperl-d7d51f4b6ba689e611fef778b3f5d12981e872ba.tar.gz
prevent Devel::Peek::Dump from lieing to us about evil class names
While one certainly can argue the merits of using a class name like "\0", it is legal so lets avoid it confusing our primary debugging tool.
Diffstat (limited to 'ext/Devel-Peek')
-rw-r--r--ext/Devel-Peek/t/Peek.t24
1 files changed, 23 insertions, 1 deletions
diff --git a/ext/Devel-Peek/t/Peek.t b/ext/Devel-Peek/t/Peek.t
index 4e39d109e0..0b9009a315 100644
--- a/ext/Devel-Peek/t/Peek.t
+++ b/ext/Devel-Peek/t/Peek.t
@@ -8,7 +8,7 @@ BEGIN {
}
}
-use Test::More tests => 52;
+use Test::More tests => 54;
use Devel::Peek;
@@ -663,3 +663,25 @@ do_test(26,
PADLIST = $ADDR
PADNAME = $ADDR\\($ADDR\\) PAD = $ADDR\\($ADDR\\)
OUTSIDE = $ADDR \\(MAIN\\)');
+
+do_test(27,
+ (bless {}, "\0::foo::\n::baz::\t::\0"),
+'SV = $RV\\($ADDR\\) at $ADDR
+ REFCNT = 1
+ FLAGS = \\(ROK\\)
+ RV = $ADDR
+ SV = PVHV\\($ADDR\\) at $ADDR
+ REFCNT = 1
+ FLAGS = \\(OBJECT,SHAREKEYS\\)
+ IV = 0 # $] < 5.009
+ NV = 0 # $] < 5.009
+ STASH = $ADDR\\t"\\\\0::foo::\\\\n::baz::\\\\t::\\\\0"
+ ARRAY = $ADDR
+ KEYS = 0
+ FILL = 0
+ MAX = 7
+ RITER = -1
+ EITER = 0x0', '',
+ $] > 5.009 ? 'The hash iterator used in dump.c sets the OOK flag'
+ : "Something causes the HV's array to become allocated");
+