Author: pixel Date: Mon Feb 12 10:41:08 2007 New Revision: 118871 Added: packages/cooker/perl/current/SOURCES/perlio-encoding.patch Modified: packages/cooker/perl/current/SPECS/perl.spec
Log: fix segfault (bugzilla #28537, perl #41442) Added: packages/cooker/perl/current/SOURCES/perlio-encoding.patch ============================================================================== --- (empty file) +++ packages/cooker/perl/current/SOURCES/perlio-encoding.patch Mon Feb 12 10:41:08 2007 @@ -0,0 +1,118 @@ +# +# +# To apply this patch: +# STEP 1: Chdir to the source directory. +# STEP 2: Run the 'applypatch' program with this patch file as input. +# +# If you do not have 'applypatch', it is part of the 'makepatch' package +# that you can fetch from the Comprehensive Perl Archive Network: +# http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz +# In the above URL, 'x' should be 2 or higher. +# +# To apply this patch without the use of 'applypatch': +# STEP 1: Chdir to the source directory. +# STEP 2: Run the 'patch' program with this file as input. +# +#### End of Preamble #### + +#### Patch data follows #### +diff -up 'bleedperl/ext/PerlIO/encoding/encoding.xs' 'bleedperl3/ext/PerlIO/encoding/encoding.xs' +Index: ./ext/PerlIO/encoding/encoding.xs +Prereq: 0.3 +--- ./ext/PerlIO/encoding/encoding.xs Tue Jun 13 21:29:10 2006 ++++ ./ext/PerlIO/encoding/encoding.xs Mon Feb 5 22:41:59 2007 +@@ -48,6 +48,7 @@ typedef struct { + SV *enc; /* the encoding object */ + SV *chk; /* CHECK in Encode methods */ + int flags; /* Flags currently just needs lines */ ++ int inEncodeCall; /* trap recursive encode calls */ + } PerlIOEncode; + + #define NEEDS_LINES 1 +@@ -147,6 +148,7 @@ PerlIOEncode_pushed(pTHX_ PerlIO * f, co + } + + e->chk = newSVsv(get_sv("PerlIO::encoding::fallback", 0)); ++ e->inEncodeCall = 0; + + FREETMPS; + LEAVE; +@@ -404,6 +406,7 @@ PerlIOEncode_flush(pTHX_ PerlIO * f) + STRLEN len; + SSize_t count = 0; + if ((PerlIOBase(f)->flags & PERLIO_F_WRBUF) && (e->base.ptr > e->base.buf)) { ++ if (e->inEncodeCall) return 0; + /* Write case - encode the buffer and write() to layer below */ + PUSHSTACKi(PERLSI_MAGIC); + SPAGAIN; +@@ -416,9 +419,12 @@ PerlIOEncode_flush(pTHX_ PerlIO * f) + XPUSHs(e->bufsv); + XPUSHs(e->chk); + PUTBACK; ++ e->inEncodeCall = 1; + if (call_method("encode", G_SCALAR) != 1) { ++ e->inEncodeCall = 0; + Perl_die(aTHX_ "panic: encode did not return a value"); + } ++ e->inEncodeCall = 0; + SPAGAIN; + str = POPs; + PUTBACK; +@@ -453,6 +459,7 @@ PerlIOEncode_flush(pTHX_ PerlIO * f) + } + /* See if there is anything left in the buffer */ + if (e->base.ptr < e->base.end) { ++ if (e->inEncodeCall) return 0; + /* Bother - have unread data. + re-encode and unread() to layer below + */ +@@ -472,9 +479,12 @@ PerlIOEncode_flush(pTHX_ PerlIO * f) + XPUSHs(str); + XPUSHs(e->chk); + PUTBACK; ++ e->inEncodeCall = 1; + if (call_method("encode", G_SCALAR) != 1) { +- Perl_die(aTHX_ "panic: encode did not return a value"); ++ e->inEncodeCall = 0; ++ Perl_die(aTHX_ "panic: encode did not return a value"); + } ++ e->inEncodeCall = 0; + SPAGAIN; + str = POPs; + PUTBACK; +#### End of Patch data #### + +#### ApplyPatch data follows #### +# Data version : 1.0 +# Date generated : Mon Feb 5 22:58:23 2007 +# Generated by : makepatch 2.03 +# Recurse directories : Yes +# Excluded files : (\A|/).*\~\Z +# (\A|/).*\.a\Z +# (\A|/).*\.bak\Z +# (\A|/).*\.BAK\Z +# (\A|/).*\.elc\Z +# (\A|/).*\.exe\Z +# (\A|/).*\.gz\Z +# (\A|/).*\.ln\Z +# (\A|/).*\.o\Z +# (\A|/).*\.obj\Z +# (\A|/).*\.olb\Z +# (\A|/).*\.old\Z +# (\A|/).*\.orig\Z +# (\A|/).*\.rej\Z +# (\A|/).*\.so\Z +# (\A|/).*\.Z\Z +# (\A|/)\.del\-.*\Z +# (\A|/)\.make\.state\Z +# (\A|/)\.nse_depinfo\Z +# (\A|/)core\Z +# (\A|/)tags\Z +# (\A|/)TAGS\Z +# v 'patchlevel.h' 4732 1160388693 33056 +# p 'ext/PerlIO/encoding/encoding.xs' 16562 1170711719 0100440 +#### End of ApplyPatch data #### + +#### End of Patch kit [created: Mon Feb 5 22:58:23 2007] #### +#### Patch checksum: 99 3441 30793 #### +#### Checksum: 117 4065 16793 #### Modified: packages/cooker/perl/current/SPECS/perl.spec ============================================================================== --- packages/cooker/perl/current/SPECS/perl.spec (original) +++ packages/cooker/perl/current/SPECS/perl.spec Mon Feb 12 10:41:08 2007 @@ -21,7 +21,7 @@ Summary: The Perl programming language Name: perl Version: 5.8.8 -Release: %mkrel 8 +Release: %mkrel 9 %define rel %{nil} License: GPL or Artistic Group: Development/Perl @@ -50,6 +50,7 @@ Patch36: perl-27359 Patch37: perl-27363 Patch38: perl-donot-defer-sig11.patch +Patch39: perlio-encoding.patch Buildroot: %{_tmppath}/%{name} Requires: perl-base = %{epoch}:%{version}-%{release} @@ -153,6 +154,7 @@ %patch36 -p1 %patch37 -p1 %patch38 -p0 +%patch39 -p0 %build %ifarch ppc
