Change 34499 by [EMAIL PROTECTED] on 2008/10/17 09:19:57
Integrate:
[ 34481]
From: YAMASHINA Hio <[EMAIL PROTECTED]>
Subject: Storable.thaw segv on blessed reference to overloaded object
Date: Wed, 15 Oct 2008 17:34:35 +0900
Message-Id: <[EMAIL PROTECTED]>
Affected files ...
... //depot/maint-5.10/perl/ext/Storable/Storable.xs#4 integrate
... //depot/maint-5.10/perl/ext/Storable/t/overload.t#2 integrate
Differences ...
==== //depot/maint-5.10/perl/ext/Storable/Storable.xs#4 (text) ====
Index: perl/ext/Storable/Storable.xs
--- perl/ext/Storable/Storable.xs#3~33161~ 2008-01-31 14:14:13.000000000
-0800
+++ perl/ext/Storable/Storable.xs 2008-10-17 02:19:57.000000000 -0700
@@ -4567,7 +4567,7 @@
* WARNING: breaks RV encapsulation.
*/
- sv_upgrade(rv, SVt_RV);
+ SvUPGRADE(rv, SVt_RV);
SvRV_set(rv, sv); /* $rv = \$sv */
SvROK_on(rv);
==== //depot/maint-5.10/perl/ext/Storable/t/overload.t#2 (text) ====
Index: perl/ext/Storable/t/overload.t
--- perl/ext/Storable/t/overload.t#1~32694~ 2007-12-22 01:23:09.000000000
-0800
+++ perl/ext/Storable/t/overload.t 2008-10-17 02:19:57.000000000 -0700
@@ -25,7 +25,7 @@
use Storable qw(freeze thaw);
-print "1..16\n";
+print "1..19\n";
package OVERLOADED;
@@ -103,4 +103,17 @@
ok 14, ref ($t) eq 'REF';
ok 15, ref ($$t) eq 'HAS_OVERLOAD';
ok 16, $$$t eq 'snow';
+
+
+#---
+# blessed reference to overloded object.
+{
+ my $a = bless [88], 'OVERLOADED';
+ my $c = thaw freeze bless \$a, 'main';
+ ok 17, ref $c eq 'main';
+ ok 18, ref $$c eq 'OVERLOADED';
+ ok 19, "$$c" eq "88";
+
+}
+
1;
End of Patch.