Change 19840 by [EMAIL PROTECTED] on 2003/06/22 16:33:25
Subject: [perl #22753] overload::StrVal() fails for regexp refs
From: "[EMAIL PROTECTED] (via RT)" <[EMAIL PROTECTED]>
Date: 21 Jun 2003 19:02:30 -0000
Message-ID: <[EMAIL PROTECTED]>
Affected files ...
... //depot/perl/lib/overload.pm#32 edit
... //depot/perl/lib/overload.t#7 edit
Differences ...
==== //depot/perl/lib/overload.pm#32 (text) ====
Index: perl/lib/overload.pm
--- perl/lib/overload.pm#31~18217~ Fri Nov 29 04:11:28 2002
+++ perl/lib/overload.pm Sun Jun 22 09:33:25 2003
@@ -84,10 +84,13 @@
sub AddrRef {
my $package = ref $_[0];
return "$_[0]" unless $package;
- bless $_[0], overload::Fake; # Non-overloaded package
- my $str = "$_[0]";
- bless $_[0], $package; # Back
- $package . substr $str, index $str, '=';
+
+ require Scalar::Util;
+ my $class = Scalar::Util::blessed($_[0]);
+ my $class_prefix = defined($class) ? "$class=" : "";
+ my $type = Scalar::Util::reftype($_[0]);
+ my $addr = Scalar::Util::refaddr($_[0]);
+ return sprintf("$class_prefix$type(0x%x)", $addr);
}
sub StrVal {
==== //depot/perl/lib/overload.t#7 (text) ====
Index: perl/lib/overload.t
--- perl/lib/overload.t#6~17864~ Sun Sep 8 07:55:31 2002
+++ perl/lib/overload.t Sun Jun 22 09:33:25 2003
@@ -1085,5 +1085,7 @@
print defined eval { $a->{b} } ? "not ok 226\n" : "ok 226\n";
print $@ =~ /zap/ ? "ok 227\n" : "not ok 227\n";
+print overload::StrVal(qr/a/) =~ /^Regexp=SCALAR\(0x[0-9a-f]+\)$/ ? "ok 228\n" : "not
ok 228\n";
+
# Last test is:
-sub last {227}
+sub last {228}
End of Patch.