Blame SOURCES/Storable-2.53-Upgrade-to-2.56.patch

a40ef2
diff --git a/Storable.pm b/Storable.pm
a40ef2
index 9d8b621..c8f6db1 100644
a40ef2
--- a/Storable.pm
a40ef2
+++ b/Storable.pm
a40ef2
@@ -22,7 +22,7 @@ package Storable; @ISA = qw(Exporter);
a40ef2
 
a40ef2
 use vars qw($canonical $forgive_me $VERSION);
a40ef2
 
a40ef2
-$VERSION = '2.53';
a40ef2
+$VERSION = '2.56';
a40ef2
 
a40ef2
 BEGIN {
a40ef2
     if (eval { local $SIG{__DIE__}; require Log::Agent; 1 }) {
a40ef2
@@ -979,43 +979,43 @@ such.
a40ef2
 
a40ef2
 Here are some code samples showing a possible usage of Storable:
a40ef2
 
a40ef2
-	use Storable qw(store retrieve freeze thaw dclone);
a40ef2
+ use Storable qw(store retrieve freeze thaw dclone);
a40ef2
 
a40ef2
-	%color = ('Blue' => 0.1, 'Red' => 0.8, 'Black' => 0, 'White' => 1);
a40ef2
+ %color = ('Blue' => 0.1, 'Red' => 0.8, 'Black' => 0, 'White' => 1);
a40ef2
 
a40ef2
-	store(\%color, 'mycolors') or die "Can't store %a in mycolors!\n";
a40ef2
+ store(\%color, 'mycolors') or die "Can't store %a in mycolors!\n";
a40ef2
 
a40ef2
-	$colref = retrieve('mycolors');
a40ef2
-	die "Unable to retrieve from mycolors!\n" unless defined $colref;
a40ef2
-	printf "Blue is still %lf\n", $colref->{'Blue'};
a40ef2
+ $colref = retrieve('mycolors');
a40ef2
+ die "Unable to retrieve from mycolors!\n" unless defined $colref;
a40ef2
+ printf "Blue is still %lf\n", $colref->{'Blue'};
a40ef2
 
a40ef2
-	$colref2 = dclone(\%color);
a40ef2
+ $colref2 = dclone(\%color);
a40ef2
 
a40ef2
-	$str = freeze(\%color);
a40ef2
-	printf "Serialization of %%color is %d bytes long.\n", length($str);
a40ef2
-	$colref3 = thaw($str);
a40ef2
+ $str = freeze(\%color);
a40ef2
+ printf "Serialization of %%color is %d bytes long.\n", length($str);
a40ef2
+ $colref3 = thaw($str);
a40ef2
 
a40ef2
 which prints (on my machine):
a40ef2
 
a40ef2
-	Blue is still 0.100000
a40ef2
-	Serialization of %color is 102 bytes long.
a40ef2
+ Blue is still 0.100000
a40ef2
+ Serialization of %color is 102 bytes long.
a40ef2
 
a40ef2
 Serialization of CODE references and deserialization in a safe
a40ef2
 compartment:
a40ef2
 
a40ef2
 =for example begin
a40ef2
 
a40ef2
-	use Storable qw(freeze thaw);
a40ef2
-	use Safe;
a40ef2
-	use strict;
a40ef2
-	my $safe = new Safe;
a40ef2
+ use Storable qw(freeze thaw);
a40ef2
+ use Safe;
a40ef2
+ use strict;
a40ef2
+ my $safe = new Safe;
a40ef2
         # because of opcodes used in "use strict":
a40ef2
-	$safe->permit(qw(:default require));
a40ef2
-	local $Storable::Deparse = 1;
a40ef2
-	local $Storable::Eval = sub { $safe->reval($_[0]) };
a40ef2
-	my $serialized = freeze(sub { 42 });
a40ef2
-	my $code = thaw($serialized);
a40ef2
-	$code->() == 42;
a40ef2
+ $safe->permit(qw(:default require));
a40ef2
+ local $Storable::Deparse = 1;
a40ef2
+ local $Storable::Eval = sub { $safe->reval($_[0]) };
a40ef2
+ my $serialized = freeze(sub { 42 });
a40ef2
+ my $code = thaw($serialized);
a40ef2
+ $code->() == 42;
a40ef2
 
a40ef2
 =for example end
a40ef2
 
a40ef2
diff --git a/Storable.xs b/Storable.xs
a40ef2
index e7d0329..83cd001 100644
a40ef2
--- a/Storable.xs
a40ef2
+++ b/Storable.xs
a40ef2
@@ -1667,6 +1667,7 @@ static void free_context(pTHX_ stcxt_t *cxt)
a40ef2
 
a40ef2
 	ASSERT(!cxt->s_dirty, ("clean context"));
a40ef2
 	ASSERT(prev, ("not freeing root context"));
a40ef2
+	assert(prev);
a40ef2
 
a40ef2
 	SvREFCNT_dec(cxt->my_sv);
a40ef2
 	SET_STCXT(prev);
a40ef2
@@ -6677,6 +6678,7 @@ SV *	obj
a40ef2
  ALIAS:
a40ef2
   net_mstore = 1
a40ef2
  CODE:
a40ef2
+  RETVAL = &PL_sv_undef;
a40ef2
   if (!do_store(aTHX_ (PerlIO*) 0, obj, 0, ix, &RETVAL))
a40ef2
     RETVAL = &PL_sv_undef;
a40ef2
  OUTPUT: