diff --git a/perl-5.10.0-pos.patch b/perl-5.10.0-pos.patch new file mode 100644 index 0000000..f00c5df --- /dev/null +++ b/perl-5.10.0-pos.patch @@ -0,0 +1,48 @@ +diff -up perl-5.10.0/pp_ctl.c.pos perl-5.10.0/pp_ctl.c +--- perl-5.10.0/pp_ctl.c.pos 2007-12-18 11:47:08.000000000 +0100 ++++ perl-5.10.0/pp_ctl.c 2008-07-21 11:00:15.000000000 +0200 +@@ -285,7 +285,6 @@ PP(pp_substcont) + { /* Update the pos() information. */ + SV * const sv = cx->sb_targ; + MAGIC *mg; +- I32 i; + SvUPGRADE(sv, SVt_PVMG); + if (!(mg = mg_find(sv, PERL_MAGIC_regex_global))) { + #ifdef PERL_OLD_COPY_ON_WRITE +@@ -295,11 +294,8 @@ PP(pp_substcont) + mg = sv_magicext(sv, NULL, PERL_MAGIC_regex_global, &PL_vtbl_mglob, + NULL, 0); + } +- i = m - orig; +- if (DO_UTF8(sv)) +- sv_pos_b2u(sv, &i); +- mg->mg_len = i; + } ++ mg->mg_len = m - orig; + if (old != rx) + (void)ReREFCNT_inc(rx); + cx->sb_rxtainted |= RX_MATCH_TAINTED(rx); +diff -up perl-5.10.0/t/op/subst.t.pos perl-5.10.0/t/op/subst.t +--- perl-5.10.0/t/op/subst.t.pos 2007-12-18 11:47:08.000000000 +0100 ++++ perl-5.10.0/t/op/subst.t 2008-07-21 11:01:01.000000000 +0200 +@@ -7,7 +7,7 @@ BEGIN { + } + + require './test.pl'; +-plan( tests => 136 ); ++plan( tests => 139 ); + + $x = 'foo'; + $_ = "x"; +@@ -583,3 +583,11 @@ is($name, "cis", q[#22351 bug with 'e' s + is($want,$_,"RT#17542"); + } + ++{ ++ my @tests = ('ABC', "\xA3\xA4\xA5", "\x{410}\x{411}\x{412}"); ++ foreach (@tests) { ++ my $id = ord $_; ++ s/./pos/ge; ++ is($_, "012", "RT#52104: $id"); ++ } ++} diff --git a/perl.spec b/perl.spec index 75319ca..18786c7 100644 --- a/perl.spec +++ b/perl.spec @@ -36,7 +36,7 @@ Patch4: perl-5.8.8-rpath-make.patch Patch5: perl-5.8.0-libdir64.patch # Fedora/RHEL specific (use libresolv instead of libbind) -Patch6: perl-5.8.6-libresolv.patch +Patch6: perl-5.10.0-libresolv.patch # FIXME: May need the "Fedora" references removed before upstreaming Patch7: perl-5.10.0-USE_MM_LD_RUN_PATH.patch @@ -79,6 +79,8 @@ Patch17: perl-5.10.0-CVE-2008-2827.patch Patch18: perl-5.10.0-removeTestHarness.patch # now include new files perl-5.10.0-TestHarness3.12.patch Patch19: perl-5.10.0-TestHarness3.12.patch +# pos function handle unicode ok +Patch20: perl-5.10.0-pos.patch BuildRoot: %{_tmppath}/%{name}-%{perl_version}-%{release}-root-%(%{__id_u} -n) BuildRequires: tcsh, dos2unix, man, groff @@ -808,6 +810,7 @@ upstream tarball from perl.org. %patch17 -p1 %patch18 -p1 %patch19 -p1 +%patch20 -p1 # # Candidates for doc recoding (need case by case review): # find . -name "*.pod" -o -name "README*" -o -name "*.pm" | xargs file -i | grep charset= | grep -v '\(us-ascii\|utf-8\)' @@ -1022,6 +1025,7 @@ perl -x patchlevel.h 'Fedora Patch16: Access permission - rt49003' perl -x patchlevel.h 'Fedora Patch17: CVE-2008-2827 perl: insecure use of chmod in rmtree' perl -x patchlevel.h 'Fedora Patch18: Remove old Test::Harness' perl -x patchlevel.h 'Fedora Patch19: Update Test::Harness to 3.12' +perl -x patchlevel.h 'Fedora Patch20: pos function handle unicode correct' %clean rm -rf $RPM_BUILD_ROOT @@ -1629,6 +1633,8 @@ make test %changelog * Mon Jul 21 2008 Marcela Maslanova 4:5.10.0-37 - 455933 update to CGI-3.38 +- fix fuzz problems (patch6) +- 217833 pos() function handle unicode characters correct * Thu Jul 10 2008 Tom "spot" Callaway 4:5.10.0-36 - rebuild for new db4 4.7