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.

Reply via email to