summaryrefslogtreecommitdiff
path: root/lib/dumpvar.pl
diff options
context:
space:
mode:
authorM.J.T. Guy <mjtg@cus.cam.ac.uk>1997-08-07 00:00:00 +0000
committerTim Bunce <Tim.Bunce@ig.co.uk>1997-08-07 00:00:00 +1200
commit74b5f52c9579e21851cb5b0b04ee78401a947eb0 (patch)
treede1e827fb106196320a1195df3122b69c2871119 /lib/dumpvar.pl
parent2b0d8408d8036d38c4729d9c464677da60605800 (diff)
downloadperl-74b5f52c9579e21851cb5b0b04ee78401a947eb0.tar.gz
[BUG:PATCH] dumpvar.pl parses some references incorrectly
dumpvar.pl parses stringified references incorrectly when extrovert class names are used. For example, x bless {}, '=ARRAY(' will crash the debugger. Patch (for 5.004_01 or 5.004_02) attached. p5p-msgid: E0wwAjQ-0004l6-00@ursa.cus.cam.ac.uk
Diffstat (limited to 'lib/dumpvar.pl')
-rw-r--r--lib/dumpvar.pl14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/dumpvar.pl b/lib/dumpvar.pl
index 1fa8246da7..c32bc2fb5e 100644
--- a/lib/dumpvar.pl
+++ b/lib/dumpvar.pl
@@ -117,9 +117,9 @@ sub unwrap {
# Check for reused addresses
if (ref $v) {
- ($address) = $v =~ /(0x[0-9a-f]+)/ ;
+ ($address) = $v =~ /(0x[0-9a-f]+)\)$/ ;
if (defined $address) {
- ($type) = $v =~ /=(.*?)\(/ ;
+ ($type) = $v =~ /=(.*?)\([^=]+$/ ;
$address{$address}++ ;
if ( $address{$address} > 1 ) {
print "${sp}-> REUSED_ADDRESS\n" ;
@@ -135,7 +135,7 @@ sub unwrap {
}
}
- if ( ref $v eq 'HASH' or $type eq 'HASH') {
+ if ( UNIVERSAL::isa($v, 'HASH') ) {
@sortKeys = sort keys(%$v) ;
undef $more ;
$tHashDepth = $#sortKeys ;
@@ -168,7 +168,7 @@ sub unwrap {
}
print "$sp empty hash\n" unless @sortKeys;
print "$sp$more" if defined $more ;
- } elsif ( ref $v eq 'ARRAY' or $type eq 'ARRAY') {
+ } elsif ( UNIVERSAL::isa($v, 'ARRAY') ) {
$tArrayDepth = $#{$v} ;
undef $more ;
$tArrayDepth = $#{$v} < $arrayDepth-1 ? $#{$v} : $arrayDepth-1
@@ -198,13 +198,13 @@ sub unwrap {
}
print "$sp empty array\n" unless @$v;
print "$sp$more" if defined $more ;
- } elsif ( ref $v eq 'SCALAR' or ref $v eq 'REF' or $type eq 'SCALAR' ) {
+ } elsif ( UNIVERSAL::isa($v, 'SCALAR') or ref $v eq 'REF' ) {
print "$sp-> ";
DumpElem $$v, $s;
- } elsif ( ref $v eq 'CODE' or $type eq 'CODE' ) {
+ } elsif ( UNIVERSAL::isa($v, 'CODE') ) {
print "$sp-> ";
dumpsub (0, $v);
- } elsif (ref $v eq 'GLOB') {
+ } elsif ( UNIVERSAL::isa($v, 'GLOB') ) {
print "$sp-> ",&stringify($$v,1),"\n";
if ($globPrint) {
$s += 3;