rpms/perl/F-8 perl-5.8.8-U31996.patch, NONE, 1.1 perl-5.8.8-U32018.patch, NONE, 1.1 perl-5.8.8-U32019.patch, NONE, 1.1 perl-5.8.8-U32025.patch, NONE, 1.1 perl-5.8.0-sharedlinker.patch, 1.1, 1.2 perl-5.8.8-U28775.patch, 1.1, 1.2 perl.spec, 1.152, 1.153

Tom Callaway spot at fedoraproject.org
Thu Aug 28 13:53:12 UTC 2008


Author: spot

Update of /cvs/pkgs/rpms/perl/F-8
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv19962

Modified Files:
	perl-5.8.0-sharedlinker.patch perl-5.8.8-U28775.patch 
	perl.spec 
Added Files:
	perl-5.8.8-U31996.patch perl-5.8.8-U32018.patch 
	perl-5.8.8-U32019.patch perl-5.8.8-U32025.patch 
Log Message:
fix bless/overload with upstream patches

perl-5.8.8-U31996.patch:

--- NEW FILE perl-5.8.8-U31996.patch ---
diff -up perl-5.8.8/sv.c.U31996 perl-5.8.8/sv.c
--- perl-5.8.8/sv.c.U31996	2008-08-27 10:04:08.000000000 -0400
+++ perl-5.8.8/sv.c	2008-08-27 10:07:51.000000000 -0400
@@ -8016,6 +8016,55 @@ S_reset_amagic(pTHX_ SV *rv, const bool 
 	/* There was only 1 reference to this object.  */
 	return;
     }
+    /* References to objects may be via RVs, or anything else that can hold
+       a reference count (AVs, HVs, GVs, and arbitrary C code)
+       Object-ness can only be accessed via true RVs, including the overloading
+       part of object-ness, so for that part it doesn't matter that the
+       overloading flag (pre 5.10) is on the reference. But the overloading
+       mechanism itself checks the referent, the object itself, hence they
+       can get out of sync.
+
+       We'll assume two common cases - either we got here through a real
+       reference, and the referent is a value in the pad of the current
+       subroutine (hence a reference count of 2 or more), during construction
+       of the reference, or that there is a second (or more) reference to
+       the object (but no arrays, hashes, pads, typeglobs or other things)
+       pointing to it.
+
+       The first case is likely to involve quite a small search.
+       The second case is O(n) on the number of SVs, but we can make it
+       terminate early if we find every reference is accounted for by an RV.
+       [Terminating early is still O(n), but with a smaller constant.]
+    */
+    {
+	/* So before trying the large O(n) linear search of all SVs, start by
+	   seeing if we can find the other references in the current pad.
+	   This avoids the big search for constructions such as
+	   my $string = ...;
+	   my $obj = bless \$string, $class;
+	   which modules like URI use.  */
+
+	U32 how_many_in_pad = how_many;
+	CV *const current_sub = find_runcv(NULL);
+	AV *const padlist = CvPADLIST(current_sub);
+	AV *const curpad = (AV*) AvARRAY(padlist)[CvDEPTH(current_sub)];
+	SV ** const start = AvARRAY(curpad);
+	SV ** end = start + AvFILLp(curpad);
+
+	while (end >= start) {
+	    SV *const sv = *end--;
+	    if (sv == target) {
+		if (--how_many_in_pad == 0) {
+		    /* We have found them all.  */
+		    return;
+		}
+	    }
+	}
+    }
+
+    /* Right, didn't find all the other referneces were lexicals or temporaries
+       in the pad, so need to do an exhaustive search to find all references.
+    */
 
     for (sva = PL_sv_arenaroot; sva; sva = (SV*)SvANY(sva)) {
 	register const SV * const svend = &sva[SvREFCNT(sva)];
@@ -8037,6 +8086,10 @@ S_reset_amagic(pTHX_ SV *rv, const bool 
 	    }
 	}
     }
+
+    /* Can get here if the object happens to be lexical somewhere else, a
+       global, an element in an array or hash, etc. But we will have found all
+       the references.  */
 }
 
 /*

perl-5.8.8-U32018.patch:

--- NEW FILE perl-5.8.8-U32018.patch ---
diff -up perl-5.8.8/lib/overload.t.U32018 perl-5.8.8/lib/overload.t
--- perl-5.8.8/lib/overload.t.U32018	2008-08-27 10:11:02.000000000 -0400
+++ perl-5.8.8/lib/overload.t	2008-08-27 10:13:21.000000000 -0400
@@ -31,7 +31,7 @@ use overload ( 
 
 qw(
 ""	stringify
-0+	numify)			# Order of arguments unsignificant
+0+	numify)			# Order of arguments insignificant
 );
 
 sub new {
@@ -47,7 +47,7 @@ sub numify { 0 + "${$_[0]}" }	# Not need
 package main;
 
 $| = 1;
-use Test::More tests => 508;
+use Test::More tests => 514;
 
 
 $a = new Oscalar "087";
@@ -744,10 +744,10 @@ else {
 		    }, 'deref';
   # Hash:
   my @cont = sort %$deref;
-  if ("\t" eq "\011") { # ascii
+  if ("\t" eq "\011") { # ASCII
       is("@cont", '23 5 fake foo');
   } 
-  else {                # ebcdic alpha-numeric sort order
+  else {                # EBCDIC alpha-numeric sort order
       is("@cont", 'fake foo 23 5');
   }
   my @keys = sort keys %$deref;
@@ -986,7 +986,7 @@ unless ($aaa) {
   main::is("$int_x", 1054);
 }
 
-# make sure that we don't inifinitely recurse
+# make sure that we don't infinitely recurse
 {
   my $c = 0;
   package Recurse;
@@ -1131,7 +1131,7 @@ like ($@, qr/zap/);
     like(overload::StrVal($no),       qr/^no_overload=ARRAY\(0x[0-9a-f]+\)$/);
 }
 
-# These are all check that overloaded values rather than reference addressess
+# These are all check that overloaded values rather than reference addresses
 # are what is getting tested.
 my ($two, $one, $un, $deux) = map {new Numify $_} 2, 1, 1, 2;
 my ($ein, $zwei) = (1, 2);
@@ -1205,7 +1205,7 @@ foreach my $op (qw(<=> == != < <= > >=))
     my $obj;
     $obj = bless {name => 'cool'}, 'Sklorsh';
     $obj->delete;
-    ok(eval {if ($obj) {1}; 1}, $@ || 'reblessed into nonexist namespace');
+    ok(eval {if ($obj) {1}; 1}, $@ || 'reblessed into nonexistent namespace');
 
     $obj = bless {name => 'cool'}, 'Sklorsh';
     $obj->delete_with_self;
@@ -1246,3 +1246,46 @@ foreach my $op (qw(<=> == != < <= > >=))
     undef $obj;
     is ($ref, undef);
 }
+
+{
+    # Subtle bug pre 5.10, as a side effect of the overloading flag being
+    # stored on the reference rather than the referent. Despite the fact that
+    # objects can only be accessed via references (even internally), the
+    # referent actually knows that it's blessed, not the references. So taking
+    # a new, unrelated, reference to it gives an object. However, the
+    # overloading-or-not flag was on the reference prior to 5.10, and taking
+    # a new reference didn't (use to) copy it.
+
+    package kayo;
+
+    use overload '""' => sub {${$_[0]}};
+
+    sub Pie {
+	return "$_[0], $_[1]";
+    }
+
+    package main;
+
+    my $class = 'kayo';
+    my $string = 'bam';
+    my $crunch_eth = bless \$string, $class;
+
+    is("$crunch_eth", $string);
+    is ($crunch_eth->Pie("Meat"), "$string, Meat");
+
+    my $wham_eth = \$string;
+
+    is("$wham_eth", $string,
+       'This reference did not have overloading in 5.8.8 and earlier');
+    is ($crunch_eth->Pie("Apple"), "$string, Apple");
+
+    my $class = ref $wham_eth;
+    $class =~ s/=.*//;
+
+    # Bless it back into its own class!
+    bless $wham_eth, $class;
+
+    is("$wham_eth", $string);
+    is ($crunch_eth->Pie("Blackbird"), "$string, Blackbird");
+}
+
diff -up perl-5.8.8/pp.c.U32018 perl-5.8.8/pp.c
--- perl-5.8.8/pp.c.U32018	2008-08-27 10:13:55.000000000 -0400
+++ perl-5.8.8/pp.c	2008-08-27 10:14:20.000000000 -0400
@@ -503,6 +503,13 @@ S_refto(pTHX_ SV *sv)
     sv_upgrade(rv, SVt_RV);
     SvRV_set(rv, sv);
     SvROK_on(rv);
+    /* As overloading is stored on the reference, not the referant, need to
+       propagate this flag to the new reference we create.  */
+    if (SvOBJECT(sv)) {
+	HV *const stash = SvSTASH(sv);
+	if (Gv_AMG(stash))
+	    SvAMAGIC_on(rv);
+    }
     return rv;
 }
 

perl-5.8.8-U32019.patch:

--- NEW FILE perl-5.8.8-U32019.patch ---
diff -up perl-5.8.8/sv.c.U32019 perl-5.8.8/sv.c
--- perl-5.8.8/sv.c.U32019	2008-08-27 10:15:56.000000000 -0400
+++ perl-5.8.8/sv.c	2008-08-27 10:17:26.000000000 -0400
@@ -8038,13 +8038,47 @@ S_reset_amagic(pTHX_ SV *rv, const bool 
     */
     {
 	/* So before trying the large O(n) linear search of all SVs, start by
-	   seeing if we can find the other references in the current pad.
+	   seeing if we can find the other references as temporaries on the
+	   stack or in the current pad.
+
 	   This avoids the big search for constructions such as
 	   my $string = ...;
 	   my $obj = bless \$string, $class;
 	   which modules like URI use.  */
 
 	U32 how_many_in_pad = how_many;
+
+	{
+	    /* Search the tmps stack */
+	    I32 ix = PL_tmps_ix;
+
+	    while (ix >= 0) {
+		SV *const sv = PL_tmps_stack[ix];
+
+		if (sv == target) {
+		    if (--how_many_in_pad == 0) {
+			/* We have found them all.  */
+			return;
+		    }
+		} else if (SvTYPE(sv) != SVTYPEMASK
+			   && (sv->sv_flags & SVf_ROK) == SVf_ROK
+			   && SvREFCNT(sv)
+			   && SvRV(sv) == target
+			   && sv != rv) {
+		    if (on)
+			SvAMAGIC_on(sv);
+		    else
+			SvAMAGIC_off(sv);
+		    if (--how_many == 0) {
+			/* We have found them all.  */
+			return;
+		    }
+		}
+		--ix;
+	    }
+	}
+
+	{
 	CV *const current_sub = find_runcv(NULL);
 	AV *const padlist = CvPADLIST(current_sub);
 	AV *const curpad = (AV*) AvARRAY(padlist)[CvDEPTH(current_sub)];
@@ -8060,6 +8094,7 @@ S_reset_amagic(pTHX_ SV *rv, const bool 
 		}
 	    }
 	}
+	}
     }
 
     /* Right, didn't find all the other referneces were lexicals or temporaries

perl-5.8.8-U32025.patch:

--- NEW FILE perl-5.8.8-U32025.patch ---
diff -up perl-5.8.8/embed.fnc.U32025 perl-5.8.8/embed.fnc
--- perl-5.8.8/embed.fnc.U32025	2008-08-27 10:32:39.000000000 -0400
+++ perl-5.8.8/embed.fnc	2008-08-27 10:33:11.000000000 -0400
@@ -1277,6 +1277,9 @@ s	|bool	|utf8_mg_pos	|NN SV *sv|NN MAGIC
 s	|bool	|utf8_mg_pos_init	|NN SV *sv|NN MAGIC **mgp \
 				|NN STRLEN **cachep|I32 i|I32 offsetp \
 				|NN const U8 *s|NN const U8 *start
+s	|U32	|process_sub	|NN CV *const current_sub|U32 how_many_in_pad \
+				|NN const SV *const target|NN SV *const rv \
+				|const bool on
 s	|void	|reset_amagic	|NN SV *rv|const bool on
 #endif
 
diff -up perl-5.8.8/embed.h.U32025 perl-5.8.8/embed.h
--- perl-5.8.8/embed.h.U32025	2008-08-27 10:33:27.000000000 -0400
+++ perl-5.8.8/embed.h	2008-08-27 10:34:01.000000000 -0400
@@ -1349,6 +1349,7 @@
 #ifdef PERL_CORE
 #define utf8_mg_pos		S_utf8_mg_pos
 #define utf8_mg_pos_init	S_utf8_mg_pos_init
+#define process_sub		S_process_sub
 #define reset_amagic		S_reset_amagic
 #endif
 #endif
@@ -3393,6 +3394,7 @@
 #ifdef PERL_CORE
 #define utf8_mg_pos(a,b,c,d,e,f,g,h,i)	S_utf8_mg_pos(aTHX_ a,b,c,d,e,f,g,h,i)
 #define utf8_mg_pos_init(a,b,c,d,e,f,g)	S_utf8_mg_pos_init(aTHX_ a,b,c,d,e,f,g)
+#define process_sub(a,b,c,d,e)	S_process_sub(aTHX_ a,b,c,d,e)
 #define reset_amagic(a,b)	S_reset_amagic(aTHX_ a,b)
 #endif
 #endif
diff -up perl-5.8.8/proto.h.U32025 perl-5.8.8/proto.h
--- perl-5.8.8/proto.h.U32025	2008-08-27 10:34:10.000000000 -0400
+++ perl-5.8.8/proto.h	2008-08-27 10:34:42.000000000 -0400
@@ -1876,6 +1876,7 @@ STATIC I32	S_expect_number(pTHX_ char** 
 #
 STATIC bool	S_utf8_mg_pos(pTHX_ SV *sv, MAGIC **mgp, STRLEN **cachep, I32 i, I32 *offsetp, I32 uoff, const U8 **sp, const U8 *start, const U8 *send);
 STATIC bool	S_utf8_mg_pos_init(pTHX_ SV *sv, MAGIC **mgp, STRLEN **cachep, I32 i, I32 offsetp, const U8 *s, const U8 *start);
+STATIC U32	S_process_sub(pTHX_ CV *const current_sub, U32 how_many_in_pad, const SV *const target, SV *const rv, const bool on);
 STATIC void	S_reset_amagic(pTHX_ SV *rv, const bool on);
 #endif
 
diff -up perl-5.8.8/sv.c.U32025 perl-5.8.8/sv.c
--- perl-5.8.8/sv.c.U32025	2008-08-27 10:28:34.000000000 -0400
+++ perl-5.8.8/sv.c	2008-08-27 10:32:28.000000000 -0400
@@ -7993,6 +7993,47 @@ Perl_sv_setref_pvn(pTHX_ SV *rv, const c
     return rv;
 }
 
+/* For this subroutine, for each level of recursion, check the pad for either
+   direct pointers to the target object, or perl references to it.
+   We assume that arrays and hashes (and deeper structures) in lexicals
+   rarely point to objects.  */
+static U32
+S_process_sub(pTHX_ CV *const current_sub, U32 how_many_in_pad,
+	      const SV *const target, SV *const rv, const bool on) {
+    AV *const padlist = CvPADLIST(current_sub);
+    long depth = CvDEPTH(current_sub);
+
+    while (depth > 0) {
+	AV *const curpad = (AV*) AvARRAY(padlist)[depth];
+	SV ** const start = AvARRAY(curpad);
+	SV ** end = start + AvFILLp(curpad);
+
+	while (end >= start) {
+	    SV *const sv = *end--;
+	    if (sv == target) {
+		if (--how_many_in_pad == 0) {
+		    /* We have found them all.  */
+		    return 0;
+		}
+	    } else if ((sv->sv_flags & SVf_ROK) == SVf_ROK
+		       && SvRV(sv) == target
+		       && sv != rv) {
+		if (on)
+		    SvAMAGIC_on(sv);
+		else
+		    SvAMAGIC_off(sv);
+		if (--how_many_in_pad == 0) {
+		    /* We have found them all.  */
+		    return 0;
+		}
+	    }
+	}
+	--depth;
+    };
+    return how_many_in_pad;
+}
+
+
 /* This is a hack to cope with reblessing from class with overloading magic to
    one without (or the other way).  Search for every reference pointing to the
    object.  Can't use S_visit() because we would need to pass a parameter to
@@ -8031,6 +8072,11 @@ S_reset_amagic(pTHX_ SV *rv, const bool 
        the object (but no arrays, hashes, pads, typeglobs or other things)
        pointing to it.
 
+       Actually, need to extend that to any pad in the call chain, and any
+       temporaries. Fortunately, we can do this in a way that doesn't involve
+       visiting any location twice, so we don't need to keep track of what
+       we've seen.
+
        The first case is likely to involve quite a small search.
        The second case is O(n) on the number of SVs, but we can make it
        terminate early if we find every reference is accounted for by an RV.
@@ -8039,7 +8085,7 @@ S_reset_amagic(pTHX_ SV *rv, const bool 
     {
 	/* So before trying the large O(n) linear search of all SVs, start by
 	   seeing if we can find the other references as temporaries on the
-	   stack or in the current pad.
+	   stack or in the pads of the current subroutine call chain.
 
 	   This avoids the big search for constructions such as
 	   my $string = ...;
@@ -8060,9 +8106,7 @@ S_reset_amagic(pTHX_ SV *rv, const bool 
 			/* We have found them all.  */
 			return;
 		    }
-		} else if (SvTYPE(sv) != SVTYPEMASK
-			   && (sv->sv_flags & SVf_ROK) == SVf_ROK
-			   && SvREFCNT(sv)
+		} else if ((sv->sv_flags & SVf_ROK) == SVf_ROK
 			   && SvRV(sv) == target
 			   && sv != rv) {
 		    if (on)
@@ -8079,26 +8123,50 @@ S_reset_amagic(pTHX_ SV *rv, const bool 
 	}
 
 	{
-	CV *const current_sub = find_runcv(NULL);
-	AV *const padlist = CvPADLIST(current_sub);
-	AV *const curpad = (AV*) AvARRAY(padlist)[CvDEPTH(current_sub)];
-	SV ** const start = AvARRAY(curpad);
-	SV ** end = start + AvFILLp(curpad);
+	    /* This code is pilfered from Perl_find_runcv  */
+	    PERL_SI	 *si;
 
-	while (end >= start) {
-	    SV *const sv = *end--;
-	    if (sv == target) {
-		if (--how_many_in_pad == 0) {
+	    for (si = PL_curstackinfo; si; si = si->si_prev) {
+		I32 ix;
+		for (ix = si->si_cxix; ix >= 0; ix--) {
+		    const PERL_CONTEXT *cx = &(si->si_cxstack[ix]);
+		    if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) {
+			CV * const cv = cx->blk_sub.cv;
+			/* Process all levels of recursion the first time we
+			   see a subroutine.  */
+			if (cx->blk_sub.olddepth + 1 == CvDEPTH(cv)) {
+			    how_many_in_pad = process_sub(cv, how_many_in_pad,
+							  target, rv, on);
+			    if (how_many_in_pad == 0) {
+				/* We have found them all.  */
+				return;
+			    }
+			}
+		    }
+		    else if (CxTYPE(cx) == CXt_EVAL && !CxTRYBLOCK(cx)) {
+			how_many_in_pad
+			    = process_sub(PL_compcv, how_many_in_pad, target,
+					  rv, on);
+			if (how_many_in_pad == 0) {
+			    /* We have found them all.  */
+			    return;
+			}
+		    }
+		}
+		how_many_in_pad
+		    = process_sub(PL_main_cv, how_many_in_pad, target, rv, on);
+		if (how_many_in_pad == 0) {
 		    /* We have found them all.  */
 		    return;
 		}
 	    }
 	}
-	}
     }
 
-    /* Right, didn't find all the other referneces were lexicals or temporaries
+    /* Right, didn't find all the other references were lexicals or temporaries
        in the pad, so need to do an exhaustive search to find all references.
+       It doesn't matter if we've already set the AMAGIC flag to the correct
+       value on some of the other references.
     */
 
     for (sva = PL_sv_arenaroot; sva; sva = (SV*)SvANY(sva)) {

perl-5.8.0-sharedlinker.patch:

Index: perl-5.8.0-sharedlinker.patch
===================================================================
RCS file: /cvs/pkgs/rpms/perl/F-8/perl-5.8.0-sharedlinker.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- perl-5.8.0-sharedlinker.patch	9 Sep 2004 10:02:23 -0000	1.1
+++ perl-5.8.0-sharedlinker.patch	28 Aug 2008 13:53:11 -0000	1.2
@@ -1,8 +1,9 @@
---- perl-5.8.0/Makefile.SH.sharedlinker	Tue Jun 18 12:36:27 2002
-+++ perl-5.8.0/Makefile.SH	Tue Jun 18 12:37:31 2002
-@@ -61,6 +61,9 @@
- 	netbsd*|freebsd[234]*|openbsd*)
+diff -up perl-5.8.8/Makefile.SH.sharedlinker perl-5.8.8/Makefile.SH
+--- perl-5.8.8/Makefile.SH.sharedlinker	2008-08-27 09:55:34.000000000 -0400
++++ perl-5.8.8/Makefile.SH	2008-08-27 09:56:02.000000000 -0400
+@@ -80,6 +80,9 @@ true)
  		linklibperl="-L. -lperl"
+ 		shrpldflags="$shrpldflags -Wl,--image-base,0x57000000"
  		;;
 +	linux*)
 +		shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib"

perl-5.8.8-U28775.patch:

Index: perl-5.8.8-U28775.patch
===================================================================
RCS file: /cvs/pkgs/rpms/perl/F-8/perl-5.8.8-U28775.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- perl-5.8.8-U28775.patch	22 Jun 2007 20:16:01 -0000	1.1
+++ perl-5.8.8-U28775.patch	28 Aug 2008 13:53:11 -0000	1.2
@@ -280,9 +280,10 @@
  
  OP *
 
---- perl-5.8.8/op.h-26
-+++ perl-5.8.8/op.h
-@@ -103,5 +103,7 @@
+--- perl-5.8.8/op.h.U28775	2008-08-27 09:57:52.000000000 -0400
++++ perl-5.8.8/op.h	2008-08-27 09:58:21.000000000 -0400
+@@ -102,6 +102,8 @@ Deprecated.  Use C<GIMME_V> instead.
+ 				/*  On OP_DBSTATE, indicates breakpoint
  				 *    (runtime property) */
  				/*  On OP_AELEMFAST, indiciates pad var */
 +				/*  On OP_ANONHASH and OP_ANONLIST, create a
@@ -290,10 +291,9 @@
  
  /* old names; don't use in new code, but don't break them, either */
  #define OPf_LIST	OPf_WANT_LIST
-
---- perl-5.8.8/pp.c-101
-+++ perl-5.8.8/pp.c
-@@ -4036,16 +4036,17 @@
+--- perl-5.8.8/pp.c.orig	2008-08-27 09:59:48.000000000 -0400
++++ perl-5.8.8/pp.c	2008-08-27 10:02:28.000000000 -0400
+@@ -4126,16 +4126,17 @@ PP(pp_anonlist)
  {
      dSP; dMARK; dORIGMARK;
      const I32 items = SP - MARK;
@@ -314,12 +314,13 @@
  
      while (MARK < SP) {
  	SV * const key = *++MARK;
-@@ -4057,7 +4058,8 @@
+@@ -4147,7 +4148,8 @@ PP(pp_anonhash)
  	(void)hv_store_ent(hv,key,val,0);
      }
      SP = ORIGMARK;
 -    XPUSHs((SV*)hv);
 +    XPUSHs(sv_2mortal((PL_op->op_flags & OPf_SPECIAL)
-+		      ? newRV_noinc((SV*) hv) : (SV*)hv));
++		     ? newRV_noinc((SV*) hv) : (SV*)hv));
      RETURN;
  }
+ 


Index: perl.spec
===================================================================
RCS file: /cvs/pkgs/rpms/perl/F-8/perl.spec,v
retrieving revision 1.152
retrieving revision 1.153
diff -u -r1.152 -r1.153
--- perl.spec	9 Jun 2008 08:38:00 -0000	1.152
+++ perl.spec	28 Aug 2008 13:53:12 -0000	1.153
@@ -24,7 +24,7 @@
 
 Name:           perl
 Version:        %{perl_version}
-Release:        40%{?dist}
+Release:        41%{?dist}
 Epoch:          %{perl_epoch}
 Summary:        The Perl programming language
 Group:          Development/Languages
@@ -142,6 +142,14 @@
 Patch49:    perl-5.8.8-rhbz238581.patch
 # buffer overflow for unicode characters in regexp
 Patch50:	perl-5.8.8-CVE-2008-1927.patch
+# Another bless overload fix (U31996)
+Patch51:	perl-5.8.8-U31996.patch
+# Still another bless overload fix (U32018)
+Patch52:	perl-5.8.8-U32018.patch
+# Yet another bless overload fix (U32019)
+Patch53:	perl-5.8.8-U32019.patch
+# Yes. Another bless overload fix (U32025)
+Patch54:	perl-5.8.8-U32025.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{perl_version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires:  tcsh, dos2unix, man, groff
@@ -419,6 +427,10 @@
 %patch48 -p1
 %patch49 -p1
 %patch50 -p1
+%patch51 -p1
+%patch52 -p1
+%patch53 -p1
+%patch54 -p1
 
 #
 # Candidates for doc recoding (need case by case review):
@@ -820,6 +832,9 @@
 # Nothing. Nada. Zilch. Zarro. Uh uh. Nope. Sorry.
 
 %changelog
+* Wed Aug 27 2008 Tom "spot" Callaway <tcallawa at redhat.com> - 4:5.8.8-41
+- apply bless/overload fixes from upstream (U31996, U32018, U32019, U32025)
+
 * Mon Jun  9 2008 Marcela Maslanova <mmaslano at redhat.com> - 4:5.8.8-40
 - 450289 CGI updato to 3.37
 




More information about the scm-commits mailing list