Change 34511 by [EMAIL PROTECTED] on 2008/10/18 19:08:20
Integrate:
[ 34499]
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.8/perl/ext/Storable/Storable.xs#35 integrate
... //depot/maint-5.8/perl/ext/Storable/t/overload.t#4 integrate
Differences ...
==== //depot/maint-5.8/perl/ext/Storable/Storable.xs#35 (text) ====
Index: perl/ext/Storable/Storable.xs
--- perl/ext/Storable/Storable.xs#34~33214~ 2008-02-02 14:01:39.000000000
-0800
+++ perl/ext/Storable/Storable.xs 2008-10-18 12:08:20.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.8/perl/ext/Storable/t/overload.t#4 (text) ====
Index: perl/ext/Storable/t/overload.t
--- perl/ext/Storable/t/overload.t#3~30808~ 2007-03-31 04:12:49.000000000
-0700
+++ perl/ext/Storable/t/overload.t 2008-10-18 12:08:20.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.