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.

Reply via email to