Remove unused patches

This commit is contained in:
Jitka Plesnikova 2014-08-18 14:52:02 +02:00
parent e13ed901d5
commit 6e4f5623cd
15 changed files with 0 additions and 1364 deletions

View File

@ -1,71 +0,0 @@
commit 6ad76e39ed152a180816212ff7b4f798b1ab9bf0
Author: Jirka Hruška <jirka@fud.cz>
Date: Wed Sep 1 11:18:43 2010 +0100
PL_my_cxt_list leaks
[perl #77352]
PL_my_cxt_list was never freed
diff --git a/perl.c b/perl.c
index dfb549d..0acd7ff 100644
--- a/perl.c
+++ b/perl.c
@@ -1069,6 +1069,10 @@ perl_destruct(pTHXx)
(long)cxstack_ix + 1);
}
+ /* the entries in this list are allocated via SV PVX's, so get freed
+ * in sv_clean_all */
+ Safefree(PL_my_cxt_list);
+
/* Now absolutely destruct everything, somehow or other, loops or no. */
/* the 2 is for PL_fdpid and PL_strtab */
commit 56d1e8d38e36ab7813af488eb8759b90bc82dd4a
Author: Jirka Hruška <jirka@fud.cz>
Date: Wed Sep 1 10:59:35 2010 +0100
Memory leak cloning PVGVs
[perl #77352]
In S_sv_dup_common, Perl_rvpv_dup was called twice on a non-GP PVGV value,
causing the first duped value to be leaked
diff --git a/AUTHORS b/AUTHORS
index 24ac6c3..7fc93a1 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -487,6 +487,7 @@ Jim Meyering <meyering@asic.sc.ti.com>
Jim Miner <jfm@winternet.com>
Jim Richardson
Jim Schneider <jschneid@netilla.com>
+Jirka Hruška <jirka@fud.cz>
Joachim Huober
Jochen Wiedmann <joe@ispsoft.de>
Jody Belka <dev-perl@pimb.org>
diff --git a/sv.c b/sv.c
index b6c03ed..11587d4 100644
--- a/sv.c
+++ b/sv.c
@@ -11120,6 +11120,7 @@ Perl_sv_dup(pTHX_ const SV *const sstr, CLONE_PARAMS *const param)
else
LvTARG(dstr) = sv_dup_inc(LvTARG(dstr), param);
case SVt_PVGV:
+ /* non-GP case already handled above */
if(isGV_with_GP(sstr)) {
GvNAME_HEK(dstr) = hek_dup(GvNAME_HEK(dstr), param);
/* Don't call sv_add_backref here as it's going to be
@@ -11143,8 +11144,7 @@ Perl_sv_dup(pTHX_ const SV *const sstr, CLONE_PARAMS *const param)
}
GvGP(dstr) = gp_dup(GvGP(sstr), param);
(void)GpREFCNT_inc(GvGP(dstr));
- } else
- Perl_rvpv_dup(aTHX_ dstr, sstr, param);
+ }
break;
case SVt_PVIO:
IoIFP(dstr) = fp_dup(IoIFP(dstr), IoTYPE(dstr), param);

View File

@ -1,82 +0,0 @@
diff -up perl-5.12.2/lib/h2ph.t.bug perl-5.12.2/lib/h2ph.t
--- perl-5.12.2/lib/h2ph.t.bug 2010-09-07 01:30:32.000000000 +0200
+++ perl-5.12.2/lib/h2ph.t 2010-10-20 16:52:07.000000000 +0200
@@ -41,9 +41,16 @@ $result = runperl( progfile => 'lib/h2ph
stderr => 1 );
like( $result, qr/syntax OK$/, "output compiles");
+$result = runperl( progfile => '_h2ph_pre.ph',
+ switches => ['-c'],
+ stderr => 1 );
+like( $result, qr/syntax OK$/, "preamble compiles");
+
$result = runperl( switches => ["-w"],
- prog => '$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);');
-is( $result, '', "output free of warnings" );
+ stderr => 1,
+ prog => <<'PROG' );
+$SIG{__WARN__} = sub { die $_[0] }; require q(lib/h2ph.pht);
+PROG
# cleanup
END {
diff -up perl-5.12.2/utils/h2ph.PL.bug perl-5.12.2/utils/h2ph.PL
--- perl-5.12.2/utils/h2ph.PL.bug 2010-09-07 01:30:32.000000000 +0200
+++ perl-5.12.2/utils/h2ph.PL 2010-10-20 16:49:33.000000000 +0200
@@ -401,7 +401,11 @@ if ($opt_e && (scalar(keys %bad_file) >
exit $Exit;
sub expr {
- $new = '"(assembly code)"' and return if /\b__asm__\b/; # freak out.
+ if (/\b__asm__\b/) { # freak out
+ $new = '"(assembly code)"';
+ return
+ }
+
my $joined_args;
if(keys(%curargs)) {
$joined_args = join('|', keys(%curargs));
@@ -770,7 +774,7 @@ sub inc_dirs
sub build_preamble_if_necessary
{
# Increment $VERSION every time this function is modified:
- my $VERSION = 2;
+ my $VERSION = 3;
my $preamble = "$Dest_dir/_h2ph_pre.ph";
# Can we skip building the preamble file?
@@ -798,7 +802,16 @@ sub build_preamble_if_necessary
# parenthesized value: d=(v)
$define{$_} = $1;
}
- if ($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
+ if (/^(\w+)\((\w)\)$/) {
+ my($macro, $arg) = ($1, $2);
+ my $def = $define{$_};
+ $def =~ s/$arg/\$\{$arg\}/g;
+ print PREAMBLE <<DEFINE;
+unless (defined &$macro) { sub $macro(\$) { my (\$$arg) = \@_; \"$def\" } }
+
+DEFINE
+ } elsif
+ ($define{$_} =~ /^([+-]?(\d+)?\.\d+([eE][+-]?\d+)?)[FL]?$/) {
# float:
print PREAMBLE
"unless (defined &$_) { sub $_() { $1 } }\n\n";
@@ -807,8 +820,14 @@ sub build_preamble_if_necessary
print PREAMBLE
"unless (defined &$_) { sub $_() { $1 } }\n\n";
} elsif ($define{$_} =~ /^\w+$/) {
- print PREAMBLE
- "unless (defined &$_) { sub $_() { &$define{$_} } }\n\n";
+ my $def = $define{$_};
+ if ($isatype{$def}) {
+ print PREAMBLE
+ "unless (defined &$_) { sub $_() { \"$def\" } }\n\n";
+ } else {
+ print PREAMBLE
+ "unless (defined &$_) { sub $_() { &$def } }\n\n";
+ }
} else {
print PREAMBLE
"unless (defined &$_) { sub $_() { \"",

View File

@ -1,13 +0,0 @@
diff -up a/x2p/find2perl.PL b/x2p/find2perl.PL
--- a/x2p/find2perl.PL 2010-12-30 03:07:17.000000000 +0100
+++ b/x2p/find2perl.PL 2012-05-29 10:18:11.697683643 +0200
@@ -681,7 +681,8 @@ sub tab () {
sub fileglob_to_re ($) {
my $x = shift;
$x =~ s#([./^\$()+])#\\$1#g;
- $x =~ s#([?*])#.$1#g;
+ $x =~ s#\*#.*#g;
+ $x =~ s#\?#.#g;
"^$x\\z";
}

View File

@ -1,191 +0,0 @@
From 9b9923c633797a232ac871903c3c14833036aa28 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Sun, 9 Jun 2013 14:14:24 -0400
Subject: [PATCH] Synchronize pod2html usage output and its POD text
Petr Pisar: Port to perl-5.16.3.
diff --git a/ext/Pod-Html/bin/pod2html b/ext/Pod-Html/bin/pod2html
index c422ebf..b022859 100644
--- a/ext/Pod-Html/bin/pod2html
+++ b/ext/Pod-Html/bin/pod2html
@@ -6,10 +6,14 @@ pod2html - convert .pod files to .html files
=head1 SYNOPSIS
- pod2html --help --htmlroot=<name> --infile=<name> --outfile=<name>
+ pod2html --help --htmldir=<name> --htmlroot=<URL>
+ --infile=<name> --outfile=<name>
--podpath=<name>:...:<name> --podroot=<name>
- --recurse --norecurse --verbose
- --index --noindex --title=<name>
+ --cachedir=<name> --flush --recurse --norecurse
+ --quiet --noquiet --verbose --noverbose
+ --index --noindex --backlink --nobacklink
+ --header --noheader --poderrors --nopoderrors
+ --css=<URL> --title=<name>
=head1 DESCRIPTION
@@ -27,12 +31,27 @@ pod2html takes the following arguments:
Displays the usage message.
+=item htmldir
+
+ --htmldir=name
+
+Sets the directory to which all cross references in the resulting HTML file
+will be relative. Not passing this causes all links to be absolute since this
+is the value that tells Pod::Html the root of the documentation tree.
+
+Do not use this and --htmlroot in the same call to pod2html; they are mutually
+exclusive.
+
=item htmlroot
- --htmlroot=name
+ --htmlroot=URL
+
+Sets the base URL for the HTML files. When cross-references are made, the
+HTML root is prepended to the URL.
+
+Do not use this if relative links are desired: use --htmldir instead.
-Sets the base URL for the HTML files. When cross-references are made,
-the HTML root is prepended to the URL.
+Do not pass both this and --htmldir to pod2html; they are mutually exclusive.
=item infile
@@ -61,6 +80,59 @@ Specify the base directory for finding library pods.
Specify which subdirectories of the podroot contain pod files whose
HTML converted forms can be linked-to in cross-references.
+=item cachedir
+
+ --cachedir=name
+
+Specify which directory is used for storing cache. Default directory is the
+current working directory.
+
+=item flush
+
+ --flush
+
+Flush the cache.
+
+=item backlink
+
+ --backlink
+
+Turn =head1 directives into links pointing to the top of the HTML file.
+
+=item nobacklink
+
+ --nobacklink
+
+Do not turn =head1 directives into links pointing to the top of the HTML file
+(default behaviour).
+
+=item header
+
+ --header
+
+Create header and footer blocks containing the text of the "NAME" section.
+
+=item noheader
+
+ --noheader
+
+Do not create header and footer blocks containing the text of the "NAME"
+section (default behaviour).
+
+=item poderrors
+
+ --poderrors
+
+Include a "POD ERRORS" section in the outfile if there were any POD errors in
+the infile (default behaviour).
+
+=item nopoderrors
+
+ --nopoderrors
+
+Do not include a "POD ERRORS" section in the outfile if there were any POD
+errors in the infile.
+
=item index
--index
@@ -86,18 +158,44 @@ Recurse into subdirectories specified in podpath (default behaviour).
Do not recurse into subdirectories specified in podpath.
+=item css
+
+ --css=URL
+
+Specify the URL of cascading style sheet to link from resulting HTML file.
+Default is none style sheet.
+
=item title
--title=title
Specify the title of the resulting HTML file.
+=item quiet
+
+ --quiet
+
+Don't display mostly harmless warning messages.
+
+=item noquiet
+
+ --noquiet
+
+Display mostly harmless warning messages (default behaviour). But this is not
+the same as "verbose" mode.
+
=item verbose
--verbose
Display progress messages.
+=item noverbose
+
+ --noverbose
+
+Do not display progress messages (default behaviour).
+
=back
=head1 AUTHOR
diff --git a/ext/Pod-Html/lib/Pod/Html.pm b/ext/Pod-Html/lib/Pod/Html.pm
index 72b37c2..3feb812 100644
--- a/ext/Pod-Html/lib/Pod/Html.pm
+++ b/ext/Pod-Html/lib/Pod/Html.pm
@@ -447,9 +447,14 @@ sub usage {
my $podfile = shift;
warn "$0: $podfile: @_\n" if @_;
die <<END_OF_USAGE;
-Usage: $0 --help --htmlroot=<name> --infile=<name> --outfile=<name>
- --podpath=<name>:...:<name> --podroot=<name> --cachedir=<name>
- --recurse --verbose --index --norecurse --noindex
+Usage: $0 --help --htmldir=<name> --htmlroot=<URL>
+ --infile=<name> --outfile=<name>
+ --podpath=<name>:...:<name> --podroot=<name>
+ --cachedir=<name> --flush --recurse --norecurse
+ --quiet --noquiet --verbose --noverbose
+ --index --noindex --backlink --nobacklink
+ --header --noheader --poderrors --nopoderrors
+ --css=<URL> --title=<name>
--[no]backlink - turn =head1 directives into links pointing to the top of
the page (off by default).
--
1.8.1.4

View File

@ -1,43 +0,0 @@
From 7fb8bf6b9bd4b199baaa0209061af0ccc11d30d9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Mon, 8 Jul 2013 16:10:38 +0200
Subject: [PATCH] Suppress system Term::ReadLine::Gnu
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
perl5db.t will die in Term::ReadLine if Term::ReadLine::Gnu is installed
in the system. Let's favour core implementation.
Best solution would be to prune @INC to prevent from loading already
installed modules like this:
BEGIN {
use Config;
@INC = grep { ! /^\Q$Config{installprefix}\E(\/|\z)/ } @INC;
}
However that is not possible (now) due to various execs (even without
proper -I) in the harness chain. perl should implement -nostdinc
option.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
lib/perl5db.t | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/perl5db.t b/lib/perl5db.t
index 0e507b2..67cdd24 100644
--- a/lib/perl5db.t
+++ b/lib/perl5db.t
@@ -26,6 +26,7 @@ BEGIN {
print "1..0 # Skip: \$ENV{PERL5DB} is already set to '$ENV{PERL5DB}'\n";
exit 0;
}
+ $ENV{PERL_RL} = 'Perl'; # Suppress system Term::ReadLine::Gnu
}
plan(116);
--
1.8.1.4

View File

@ -1,49 +0,0 @@
From 56b960b25894b4b1e1f2ce0ff443c187860bdf76 Mon Sep 17 00:00:00 2001
From: "Craig A. Berry" <craigberry@mac.com>
Date: Sun, 30 Jun 2013 21:09:21 -0500
Subject: [PATCH] Make t/comp/parser.t get the correct libraries.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In principle it shouldn't need libraries, but an eval of a utf8
constant now triggers automatic loading of utf8.pm, and it was
looking for that in the usual @INC locations set at configuration
time. Which just might match an installed perl rather than the
perl being tested. So make sure we get the correct libraries.
Petr Pisar: Ported to 5.18.2
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/comp/parser.t | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/t/comp/parser.t b/t/comp/parser.t
index 4f2da90..f64d5ce 100644
--- a/t/comp/parser.t
+++ b/t/comp/parser.t
@@ -3,6 +3,11 @@
# Checks if the parser behaves correctly in edge cases
# (including weird syntax errors)
+BEGIN {
+ @INC = qw(. ../lib);
+ chdir 't';
+}
+
print "1..155\n";
sub failed {
@@ -462,7 +467,7 @@ like $@, "^Identifier too long at ", 'ident buffer overflow';
# bug #74022: Loop on characters in \p{OtherIDContinue}
# This test hangs if it fails.
-eval chr 0x387;
+eval chr 0x387; # forces loading of utf8.pm
is(1,1, '[perl #74022] Parser looping on OtherIDContinue chars');
# More awkward tests for #line. Keep these at the end, as they will screw
--
1.9.0

View File

@ -1,59 +0,0 @@
From a8d0bb2102bc09bfdc7e661fb159d9257474f168 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Thu, 10 Apr 2014 16:16:31 +0200
Subject: [PATCH] Pass -fwrapv to stricter GCC 4.9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is port to 5.18.2 of the two upstream patches:
commit 869747506fd0081f6c7eed149ec6f7adbcc4d5b1
Author: H.Merijn Brand <h.m.brand@xs4all.nl>
Date: Wed Apr 9 11:16:55 2014 +0200
gcc 4.9 by default does some optimizations that break perl (#121505)
Patch by Tony Cook
commit 00051dd553979bd2a1dee100c324b59ee76a49e7
Author: H.Merijn Brand <h.m.brand@xs4all.nl>
Date: Wed Apr 9 12:31:23 2014 +0200
-fwrapv is broken prior to gcc-4.3 (googled and patched by Zefram)
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
Configure | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/Configure b/Configure
index 37b49c8..47e7b8f 100755
--- a/Configure
+++ b/Configure
@@ -4520,6 +4520,22 @@ case "$gccversion" in
$rm -f try try.*
esac
+# gcc 4.9 by default does some optimizations that break perl.
+# see ticket 121505.
+#
+# The -fwrapv disables those optimizations (and probably others,) so
+# for gcc 4.9 (and later, since the optimizations probably won't go
+# away), add -fwrapv unless the user requests -fno-wrapv, which
+# disables -fwrapv, or if the user requests -fsanitize=undefined,
+# which turns the overflows -fwrapv ignores into runtime errors.
+case "$gccversion" in
+4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*)
+ case "$ccflags" in
+ *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;;
+ *) ccflags="$ccflags -fwrapv" ;;
+ esac
+esac
+
: What should the include directory be ?
echo " "
$echo $n "Hmm... $c"
--
1.9.0

View File

@ -1,38 +0,0 @@
From fe89bf70817551c30bcacaef25578ffeb7d71eb1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Sun, 9 Jun 2013 14:01:49 -0400
Subject: [PATCH] Synchronize h2ph POD text with usage output
---
utils/h2ph.PL | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/utils/h2ph.PL b/utils/h2ph.PL
index a2d737b..9a8b14d 100644
--- a/utils/h2ph.PL
+++ b/utils/h2ph.PL
@@ -866,7 +866,8 @@ h2ph - convert .h C header files to .ph Perl header files
=head1 SYNOPSIS
-B<h2ph [-d destination directory] [-r | -a] [-l] [headerfiles]>
+B<h2ph [-d destination directory] [-r | -a] [-l] [-h] [-e] [-D] [-Q]
+[headerfiles]>
=head1 DESCRIPTION
@@ -932,6 +933,11 @@ you will see the slightly more helpful
However, the B<.ph> files almost double in size when built using B<-h>.
+=item -e
+
+If an error is encountered during conversion, output file will be removed and
+a warning emitted instead of terminating the conversion immediately.
+
=item -D
Include the code from the B<.h> file as a comment in the B<.ph> file.
--
1.8.1.4

View File

@ -1,31 +0,0 @@
From fba93b250c0d566f7ef26442312286310b2b9b46 Mon Sep 17 00:00:00 2001
From: Father Chrysostomos <sprout@cpan.org>
Date: Sun, 2 Jun 2013 00:36:33 -0700
Subject: [PATCH] =?UTF-8?q?[perl=20#118237]=20Fix=20coreamp.t=E2=80=99s=20?=
=?UTF-8?q?rand=20test?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
when rand returns something really small that does not
begin with 0, such as 2.90736361456823e-05.
---
t/op/coreamp.t | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/op/coreamp.t b/t/op/coreamp.t
index c1f7181..fe7c741 100644
--- a/t/op/coreamp.t
+++ b/t/op/coreamp.t
@@ -637,7 +637,7 @@ test_proto 'quotemeta', '$', '\$';
test_proto 'rand';
$tests += 3;
-like &CORE::rand, qr/^0[.\d+-e]*\z/, '&rand';
+like &CORE::rand, qr/^[.\d+-e]*\z/, '&rand';
unlike join(" ", &CORE::rand), qr/ /, '&rand in list context';
&cmp_ok(&CORE::rand(78), qw '< 78', '&rand with 1 arg');
--
1.8.3.1

View File

@ -1,96 +0,0 @@
From 2f222bbdd2d6da605708c3ab620ac25c62481179 Mon Sep 17 00:00:00 2001
From: Father Chrysostomos <sprout@cpan.org>
Date: Sun, 28 Jul 2013 12:35:47 -0700
Subject: [PATCH] [perl #119051] Fix crash with \&$glob_copy
$ref = *Foo::nosub;
\&$ref;
The assignment creates a glob copy (coercible glob; one that down-
grades back to a simple scalar when assigned to).
\&$ref autovivifies a stub in that glob. The CvGV pointer ends up
pointing to $ref, rather than *Foo::nosub. $ref can easily cease
being a glob. So crashes happen.
Stub autovivification used to stringify the glob, look it up again by
name, and then vivify the stub in the glob.
In commit 186a5ba82d584 I removed what seemed like a waste of CPU
cycles, but apparently it served some purpose. The lookup caused CvGV
to point to *Foo::nosub, rather than $x.
This commit restores the stringfy-and-lookup if the glob is coercible
(SvFAKE). It goes a little further and turns off the SvFAKE flag if
the glob just looked up is also FAKE.
It turns out this bug is old, and has been triggerable via glob copies
in stash elements for a long time. 186a5ba82d584 made it easier to
trigger the bug (so it is a regression from 5.16).
---
op.c | 8 +++++++-
t/op/gv.t | 16 +++++++++++++++-
2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/op.c b/op.c
index e308d08..7576509 100644
--- a/op.c
+++ b/op.c
@@ -7918,13 +7918,19 @@ CV *
Perl_newSTUB(pTHX_ GV *gv, bool fake)
{
CV *cv = MUTABLE_CV(newSV_type(SVt_PVCV));
+ GV *cvgv;
PERL_ARGS_ASSERT_NEWSTUB;
assert(!GvCVu(gv));
GvCV_set(gv, cv);
GvCVGEN(gv) = 0;
if (!fake && HvENAME_HEK(GvSTASH(gv)))
gv_method_changed(gv);
- CvGV_set(cv, gv);
+ if (SvFAKE(gv)) {
+ cvgv = gv_fetchsv((SV *)gv, GV_ADDMULTI, SVt_PVCV);
+ SvFAKE_off(cvgv);
+ }
+ else cvgv = gv;
+ CvGV_set(cv, cvgv);
CvFILE_set_from_cop(cv, PL_curcop);
CvSTASH_set(cv, PL_curstash);
GvMULTI_on(gv);
diff --git a/t/op/gv.t b/t/op/gv.t
index deb92f3..806a68a 100644
--- a/t/op/gv.t
+++ b/t/op/gv.t
@@ -12,7 +12,7 @@ BEGIN {
use warnings;
-plan( tests => 245 );
+plan( tests => 247 );
# type coercion on assignment
$foo = 'foo';
@@ -959,6 +959,20 @@ package lrcg {
$::{aoeuaoeuaoeaoeu} = __PACKAGE__; # cow
() = *{"aoeuaoeuaoeaoeu"};
+$x = *_119051;
+$y = \&$x;
+undef $x;
+eval { &$y };
+pass "No crash due to CvGV(vivified stub) pointing to flattened glob copy";
+# Not really supported, but this should not crash either:
+$x = *_119051again;
+delete $::{_119051again};
+$::{_119051again} = $x; # now we have a fake glob under the right name
+$y = \&$x; # so when this tries to look up the right GV for
+undef $::{_119051again}; # CvGV, it still gets a fake one
+eval { $y->() };
+pass "No crash due to CvGV pointing to glob copy in the stash";
+
__END__
Perl
Rules
--
1.8.3.1

View File

@ -1,68 +0,0 @@
From f5df269c5cef57294662d0b1f80a468b91f13643 Mon Sep 17 00:00:00 2001
From: Father Chrysostomos <sprout@cpan.org>
Date: Fri, 5 Jul 2013 23:59:46 -0700
Subject: [PATCH] [perl #117917] /(?{ m|...| }) (?{ $1 })/
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
A regular expression invoked inside a regular expression code block
can cause other code blocks in the same outer regular expression to
see the wrong values in $1.
PL_curpm holds a pointer to the match operator from which $1, $2, etc.
get their values.
Normally PL_curpm is set at the end of a match.
When code blocks are embedded inside a regular expression, PL_curpm
is set during a match to point to PL_reg_curpm, which is a dummy op
pointing to the current regular expression.
S_setup_eval_state is called at the beginning of regexp execution.
It is responsible for setting up PL_regcurpm and making PL_curpm
point to it.
Code blocks are executed using the multicall API. PUSH_MULTICALL
records the value of PL_curpm and POP_MULTICALL makes sure that the
previous value of PL_curpm is restored.
Executing a code block can cause PL_curpm to point to something else.
Since we dont necessarily do POP_MULTICALL between code block calls
within a single regular expression (sometimes we do, depending on
backtracking), PL_curpm may not have been restored when a second code
block fires. So we have to restore it to point to PL_reg_curpm manu-
ally after calling a code block.
---
regexec.c | 1 +
t/re/re_tests | 2 ++
2 files changed, 3 insertions(+)
diff --git a/regexec.c b/regexec.c
index 12548d5..6367e2e 100644
--- a/regexec.c
+++ b/regexec.c
@@ -4991,6 +4991,7 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
PL_curcop = ocurcop;
PL_regeol = saved_regeol;
S_regcp_restore(aTHX_ rex, runops_cp, &maxopenparen);
+ PL_curpm = PL_reg_curpm;
if (logical != 2)
break;
diff --git a/t/re/re_tests b/t/re/re_tests
index 9a24360..3921bb7 100644
--- a/t/re/re_tests
+++ b/t/re/re_tests
@@ -613,6 +613,8 @@ $(?<=^(a)) a y $1 a
^[^bcd]*(c+) aexycd y $1 c
(?{$a=2})a*aa(?{local$a=$a+1})k*c(?{$b=$a}) yaaxxaaaacd y $b 3
(?{$a=2})(a(?{local$a=$a+1}))*aak*c(?{$b=$a}) yaaxxaaaacd y $b 4
+# [perl #117917]
+^(a(?{ "x" =~ m{x}})b)(??{ $1 }) abab y $& abab
(>a+)ab aaab n - -
(?>a+)b aaab y - -
([[:]+) a:[b]: y $1 :[
--
1.8.3.1

View File

@ -1,69 +0,0 @@
From cccbbce940ea952c4c236049e98d21a011475cb1 Mon Sep 17 00:00:00 2001
From: Philip Boulain <philip.boulain@smoothwall.net>
Date: Mon, 3 Sep 2012 15:16:26 +0100
Subject: [PATCH] Reap child in case where exception has been thrown
If open3 throws due to an issue such as an exec failure, the caller
cannot know the child PID to wait for. Therefore it is our
responsibility to reap it.
Also update POD, since on some platforms exec failures now ARE raised as
exceptions (since perlbug #72016).
---
ext/IPC-Open3/lib/IPC/Open3.pm | 4 +++-
ext/IPC-Open3/t/IPC-Open3.t | 7 ++++++-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/ext/IPC-Open3/lib/IPC/Open3.pm b/ext/IPC-Open3/lib/IPC/Open3.pm
index 989c2f6..f50146f 100644
--- a/ext/IPC-Open3/lib/IPC/Open3.pm
+++ b/ext/IPC-Open3/lib/IPC/Open3.pm
@@ -57,7 +57,8 @@ as file descriptors.
open3() returns the process ID of the child process. It doesn't return on
failure: it just raises an exception matching C</^open3:/>. However,
C<exec> failures in the child (such as no such file or permission denied),
-are just reported to CHLD_ERR, as it is not possible to trap them.
+are just reported to CHLD_ERR under Windows and OS/2, as it is not possible
+to trap them.
If the child process dies for any reason, the next write to CHLD_IN is
likely to generate a SIGPIPE in the parent, which is fatal by default.
@@ -297,6 +298,7 @@ sub _open3 {
if ($bytes_read) {
(my $bang, $to_read) = unpack('II', $buf);
read($stat_r, my $err = '', $to_read);
+ waitpid $kidpid, 0; # Reap child which should have exited
if ($err) {
utf8::decode $err if $] >= 5.008;
} else {
diff --git a/ext/IPC-Open3/t/IPC-Open3.t b/ext/IPC-Open3/t/IPC-Open3.t
index 7b85b82..6ab519d 100644
--- a/ext/IPC-Open3/t/IPC-Open3.t
+++ b/ext/IPC-Open3/t/IPC-Open3.t
@@ -14,10 +14,11 @@ BEGIN {
}
use strict;
-use Test::More tests => 37;
+use Test::More tests => 38;
use IO::Handle;
use IPC::Open3;
+use POSIX ":sys_wait_h";
my $perl = $^X;
@@ -154,6 +155,10 @@ $TB->current_test($test);
isnt($@, '',
'open3 of a non existent program fails with an exception in the parent')
or do {waitpid $pid, 0};
+ SKIP: {
+ skip 'open3 returned, our responsibility to reap', 1 unless $@;
+ is(waitpid(-1, WNOHANG), -1, 'failed exec child is reaped');
+ }
}
$pid = eval { open3 'WRITE', '', 'ERROR', '/non/existent/program'; };
--
1.8.3.1

View File

@ -1,101 +0,0 @@
From 7b58d7c4e3ad14ac3c60f1ea5d1032205a086e71 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Tue, 14 Jan 2014 09:24:40 +1100
Subject: [PATCH] [perl #118817] avoid using 2 handles to write to the debug
output
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Previously the tests were run with the following config:
NonStop=0 TTY=db.out LineInfo=db.out
This meant that the debugger would write the prologue, command prompts
and their results and the epilogue to one handle, and any line trace
information to the second handle. Since those handles didn't share
file a file position, the line trace info would overwrite the
prologue, and the epilogue would overwrite part of the line trace
info.
When TTY=vt100 on Redhat systems, this made the epilogue just long
enough to overwrite the line trace data that a test matched against,
causing the test to fail.
To fix this, I avoided setting LineInfo:
NonStop=0 TTY=db.out
and since LineInfo defaults to using the TTY handle, both type of
content are written to db.out *without* overwriting each other.
Unfortunately this broke some other tests, since now the command
prompts which were overwritten by line trace information are mixed in
with the line traces - I've modified the tests that failed to account
for the included command lines.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
lib/perl5db.t | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/lib/perl5db.t b/lib/perl5db.t
index 17fa744..95d2030 100644
--- a/lib/perl5db.t
+++ b/lib/perl5db.t
@@ -72,7 +72,7 @@ sub _out_contents
rc(
<<'EOF',
-&parse_options("NonStop=0 ReadLine=0 TTY=db.out LineInfo=db.out");
+&parse_options("NonStop=0 ReadLine=0 TTY=db.out");
sub afterinit {
push(@DB::typeahead,
@@ -267,7 +267,7 @@ sub _quote
sub _run {
my $self = shift;
- my $rc = qq{&parse_options("NonStop=0 TTY=db.out LineInfo=db.out");\n};
+ my $rc = qq{&parse_options("NonStop=0 TTY=db.out");\n};
$rc .= join('',
map { "$_\n"}
@@ -1235,6 +1235,7 @@ DebugWrap->new({
$wrapper->contents_like(
qr/
$line_out
+ auto\(-\d+\)\s+DB<\d+>\s+\.\n
$line_out
/msx,
'Test the "." command',
@@ -2380,6 +2381,10 @@ DebugWrap->new({
$wrapper->contents_like(qr/
^main::\([^:]+:28\):\n
28:\s+myfunc\(\);\n
+ auto\(-\d+\)\s+DB<1>\s+t\n
+ Trace\ =\ on\n
+ auto\(-\d+\)\s+DB<1>\s+b\ 18\n
+ auto\(-\d+\)\s+DB<2>\s+c\n
main::myfunc\([^:]+:25\):\n
25:\s+bar\(\);\n
/msx,
@@ -2407,10 +2412,14 @@ DebugWrap->new({
$wrapper->contents_like(qr/
^main::\([^:]+:28\):\n
28:\s+myfunc\(\);\n
+ auto\(-\d+\)\s+DB<1>\s+o\ AutoTrace\n
+ \s+AutoTrace\s+=\s+'1'\n
+ auto\(-\d+\)\s+DB<2>\s+b\ 18\n
+ auto\(-\d+\)\s+DB<3>\s+c\n
main::myfunc\([^:]+:25\):\n
25:\s+bar\(\);\n
/msx,
- 'Test the t command with function calls.',
+ 'Test the o AutoTrace command with function calls.',
);
}
--
1.8.4.2

View File

@ -1,62 +0,0 @@
diff -up perl-5.12.3/pp.c.87 perl-5.12.3/pp.c
--- perl-5.12.3/pp.c.87 2011-01-09 21:20:58.000000000 +0100
+++ perl-5.12.3/pp.c 2011-04-01 15:06:23.000000000 +0200
@@ -3949,6 +3949,8 @@ PP(pp_ucfirst)
SvCUR_set(dest, need - 1);
}
}
+ if (dest != source && SvTAINTED(source))
+ SvTAINT(dest);
SvSETMAGIC(dest);
RETURN;
}
@@ -4008,7 +4010,8 @@ PP(pp_uc)
SvUPGRADE(dest, SVt_PV);
d = (U8*)SvGROW(dest, min);
(void)SvPOK_only(dest);
-
+ if (dest != source && SvTAINTED(source))
+ SvTAINT(dest);
SETs(dest);
}
@@ -4433,6 +4436,8 @@ PP(pp_lc)
SvCUR_set(dest, d - (U8*)SvPVX_const(dest));
}
}
+ if (dest != source && SvTAINTED(source))
+ SvTAINT(dest);
SvSETMAGIC(dest);
RETURN;
}
diff -up perl-5.12.3/t/op/taint.t.87 perl-5.12.3/t/op/taint.t
--- perl-5.12.3/t/op/taint.t.87 2011-01-09 21:20:58.000000000 +0100
+++ perl-5.12.3/t/op/taint.t 2011-04-01 15:07:43.000000000 +0200
@@ -17,7 +17,7 @@ use Config;
use File::Spec::Functions;
BEGIN { require './test.pl'; }
-plan tests => 302;
+plan tests => 306;
$| = 1;
@@ -1318,6 +1318,18 @@ foreach my $ord (78, 163, 256) {
unlike($err, qr/^\d+$/, 'tainted $!');
}
+{
+ # [perl #87336] lc/uc(first) failing to taint the returned string
+ my $source = "foo$TAINT";
+ my $dest = lc $source;
+ test $dest, "lc(tainted) taints its return value";
+ $dest = lcfirst $source;
+ test $dest, "lcfirst(tainted) taints its return value";
+ $dest = uc $source;
+ test $dest, "uc(tainted) taints its return value";
+ $dest = ucfirst $source;
+ test $dest, "ucfirst(tainted) taints its return value";
+}
# This may bomb out with the alarm signal so keep it last
SKIP: {

View File

@ -1,391 +0,0 @@
diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/Changes.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/Changes
--- perl-5.12.3/cpan/ExtUtils-ParseXS/Changes.22206 2011-01-09 15:20:53.000000000 -0500
+++ perl-5.12.3/cpan/ExtUtils-ParseXS/Changes 2011-01-26 16:15:45.072549003 -0500
@@ -1,5 +1,73 @@
Revision history for Perl extension ExtUtils::ParseXS.
+2.2206 - Sun Jul 4 15:43:21 EDT 2010
+
+ Bug fixes:
+
+ - Make xsubpp accept the _ prototype (RT#57157) [Rafael Garcia-Suarez]
+
+ - INCLUDE_COMMAND portability fixes for VMS (RT#58181) [Craig Berry]
+
+ - INCLUDE_COMMAND fixes to detect non-zero exit codes (RT#52873)
+ [Steffen Mueller]
+
+2.2205 - Wed Mar 10 18:15:36 EST 2010
+
+ Other:
+
+ - No longer ships with Build.PL to avoid creating a circular dependency
+
+2.2204 - Wed Mar 10 14:23:52 EST 2010
+
+ Other:
+
+ - Downgraded warnings on using INCLUDE with a command from "deprecated"
+ to "discouraged" and limited it to the case where the command includes
+ "perl" [Steffen Mueller]
+
+2.2203 - Thu Feb 11 14:00:51 EST 2010
+
+ Bug fixes:
+
+ - Build.PL was not including ExtUtils/xsubpp for installation. Fixed
+ by subclassing M::B::find_pm_files to include it [David Golden]
+
+2.2202 - Wed Jan 27 15:04:59 EST 2010
+
+ Bug fixes:
+
+ - The fix to IN/OUT/OUTLIST was itself broken and is now fixed.
+ [Reported by Serdar Dalgic; fix suggested by Rafael Garcia-Suarez]
+
+ We apologize for the fault in the regex. Those responsible
+ have been sacked.
+
+2.2201 Mon Jan 25 16:12:05 EST 2010
+
+ Bug fixes:
+
+ - IN/OUT/OUTLIST, etc. were broken due to a bad regexp. [Simon Cozens]
+
+2.22 - Mon Jan 11 15:00:07 EST 2010
+
+ No changes from 2.21_02
+
+2.21_02 - Sat Dec 19 10:55:41 EST 2009
+
+ Bug fixes:
+
+ - fixed bugs and added tests for INCLUDE_COMMAND [Steffen Mueller]
+
+2.21_01 - Sat Dec 19 07:22:44 EST 2009
+
+ Enhancements:
+
+ - New 'INCLUDE_COMMAND' directive [Steffen Mueller]
+
+ Bug fixes:
+
+ - Workaround for empty newXS macro found in P5NCI [Goro Fuji]
+
2.21 - Mon Oct 5 11:17:53 EDT 2009
Bug fixes:
@@ -12,7 +80,7 @@ Revision history for Perl extension ExtU
Bug fixes:
- Use "char* file" for perl < 5.9, not "char[] file"; fixes mod_perl
- breakage due to prior attempts to fix RT#48104 [David Golden]
+ breakage due to prior attempts to fix RT#48104 [David Golden]
2.20_06 - Fri Oct 2 23:45:45 EDT 2009
@@ -62,8 +130,8 @@ Revision history for Perl extension ExtU
2.20_03 - Thu Jul 23 23:14:50 EDT 2009
Bug fixes:
- - Fixed "const char *" errors for 5.8.8 (and older) (RT#48104)
- [Vincent Pit]
+ - Fixed "const char *" errors for 5.8.8 (and older) (RT#48104)
+ [Vincent Pit]
- Added newline before a preprocessor directive (RT#30673)
[patch by hjp]
diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
--- perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm.22206 2011-01-09 15:20:53.000000000 -0500
+++ perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm 2011-01-26 16:16:15.366548997 -0500
@@ -18,7 +18,7 @@ my(@XSStack); # Stack of conditionals an
my($XSS_work_idx, $cpp_next_tmp);
use vars qw($VERSION);
-$VERSION = '2.21';
+$VERSION = '2.2206';
$VERSION = eval $VERSION if $VERSION =~ /_/;
use vars qw(%input_expr %output_expr $ProtoUsed @InitFileCode $FH $proto_re $Overload $errors $Fallback
@@ -74,7 +74,7 @@ sub process_file {
($XSS_work_idx, $cpp_next_tmp) = (0, "XSubPPtmpAAAA");
@InitFileCode = ();
$FH = Symbol::gensym();
- $proto_re = "[" . quotemeta('\$%&*@;[]') . "]" ;
+ $proto_re = "[" . quotemeta('\$%&*@;[]_') . "]" ;
$Overload = 0;
$errors = 0;
$Fallback = '&PL_sv_undef';
@@ -230,9 +230,10 @@ sub process_file {
# Match an XS keyword
$BLOCK_re= '\s*(' . join('|', qw(
- REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE OUTPUT
- CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE VERSIONCHECK INCLUDE
- SCOPE INTERFACE INTERFACE_MACRO C_ARGS POSTCALL OVERLOAD FALLBACK
+ REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE
+ OUTPUT CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE
+ VERSIONCHECK INCLUDE INCLUDE_COMMAND SCOPE INTERFACE
+ INTERFACE_MACRO C_ARGS POSTCALL OVERLOAD FALLBACK
)) . "|$END)\\s*:";
@@ -448,7 +449,7 @@ EOF
$xsreturn = 0;
$_ = shift(@line);
- while (my $kwd = check_keyword("REQUIRE|PROTOTYPES|FALLBACK|VERSIONCHECK|INCLUDE|SCOPE")) {
+ while (my $kwd = check_keyword("REQUIRE|PROTOTYPES|FALLBACK|VERSIONCHECK|INCLUDE(?:_COMMAND)?|SCOPE")) {
&{"${kwd}_handler"}() ;
next PARAGRAPH unless @line ;
$_ = shift(@line);
@@ -520,11 +521,11 @@ EOF
next unless defined($pre) && length($pre);
my $out_type = '';
my $inout_var;
- if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//) {
+ if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//) {
my $type = $1;
$out_type = $type if $type ne 'IN';
- $arg =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//;
- $pre =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\s+//;
+ $arg =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//;
+ $pre =~ s/^(IN|IN_OUTLIST|OUTLIST|OUT|IN_OUT)\b\s*//;
}
my $islength;
if ($name =~ /^length\( \s* (\w+) \s* \)\z/x) {
@@ -554,7 +555,7 @@ EOF
} else {
@args = split(/\s*,\s*/, $orig_args);
for (@args) {
- if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|IN_OUT|OUT)\s+//) {
+ if ($process_inout and s/^(IN|IN_OUTLIST|OUTLIST|IN_OUT|OUT)\b\s*//) {
my $out_type = $1;
next if $out_type eq 'IN';
$only_C_inlist{$_} = 1 if $out_type eq "OUTLIST";
@@ -934,6 +935,10 @@ EOF
EOF
}
}
+ elsif($newXS eq 'newXS'){ # work around P5NCI's empty newXS macro
+ push(@InitFileCode,
+ " ${newXS}(\"$pname\", XS_$Full_func_name, file$proto);\n");
+ }
else {
push(@InitFileCode,
" (void)${newXS}(\"$pname\", XS_$Full_func_name, file$proto);\n");
@@ -1481,6 +1486,25 @@ sub PROTOTYPES_handler ()
}
+sub PushXSStack
+ {
+ my %args = @_;
+ # Save the current file context.
+ push(@XSStack, {
+ type => 'file',
+ LastLine => $lastline,
+ LastLineNo => $lastline_no,
+ Line => \@line,
+ LineNo => \@line_no,
+ Filename => $filename,
+ Filepathname => $filepathname,
+ Handle => $FH,
+ IsPipe => scalar($filename =~ /\|\s*$/),
+ %args,
+ }) ;
+
+ }
+
sub INCLUDE_handler ()
{
# the rest of the current line should contain a valid filename
@@ -1499,17 +1523,16 @@ sub INCLUDE_handler ()
++ $IncludedFiles{$_} unless /\|\s*$/ ;
- # Save the current file context.
- push(@XSStack, {
- type => 'file',
- LastLine => $lastline,
- LastLineNo => $lastline_no,
- Line => \@line,
- LineNo => \@line_no,
- Filename => $filename,
- Filepathname => $filepathname,
- Handle => $FH,
- }) ;
+ if (/\|\s*$/ && /^\s*perl\s/) {
+ Warn("The INCLUDE directive with a command is discouraged." .
+ " Use INCLUDE_COMMAND instead! In particular using 'perl'" .
+ " in an 'INCLUDE: ... |' directive is not guaranteed to pick" .
+ " up the correct perl. The INCLUDE_COMMAND directive allows" .
+ " the use of \$^X as the currently running perl, see" .
+ " 'perldoc perlxs' for details.");
+ }
+
+ PushXSStack();
$FH = Symbol::gensym();
@@ -1523,7 +1546,7 @@ sub INCLUDE_handler ()
EOF
$filename = $_ ;
- $filepathname = "$dir/$filename";
+ $filepathname = File::Spec->catfile($dir, $filename);
# Prime the pump by reading the first
# non-blank line
@@ -1535,7 +1558,64 @@ EOF
$lastline = $_ ;
$lastline_no = $. ;
+ }
+
+sub QuoteArgs {
+ my $cmd = shift;
+ my @args = split /\s+/, $cmd;
+ $cmd = shift @args;
+ for (@args) {
+ $_ = q(").$_.q(") if !/^\"/ && length($_) > 0;
+ }
+ return join (' ', ($cmd, @args));
+ }
+sub INCLUDE_COMMAND_handler ()
+ {
+ # the rest of the current line should contain a valid command
+
+ TrimWhitespace($_) ;
+
+ $_ = QuoteArgs($_) if $^O eq 'VMS';
+
+ death("INCLUDE_COMMAND: command missing")
+ unless $_ ;
+
+ death("INCLUDE_COMMAND: pipes are illegal")
+ if /^\s*\|/ or /\|\s*$/ ;
+
+ PushXSStack( IsPipe => 1 );
+
+ $FH = Symbol::gensym();
+
+ # If $^X is used in INCLUDE_COMMAND, we know it's supposed to be
+ # the same perl interpreter as we're currently running
+ s/^\s*\$\^X/$^X/;
+
+ # open the new file
+ open ($FH, "-|", "$_")
+ or death("Cannot run command '$_' to include its output: $!") ;
+
+ print Q(<<"EOF");
+#
+#/* INCLUDE_COMMAND: Including output of '$_' from '$filename' */
+#
+EOF
+
+ $filename = $_ ;
+ $filepathname = $filename;
+ $filepathname =~ s/\"/\\"/g;
+
+ # Prime the pump by reading the first
+ # non-blank line
+
+ # skip leading blank lines
+ while (<$FH>) {
+ last unless /^\s*$/ ;
+ }
+
+ $lastline = $_ ;
+ $lastline_no = $. ;
}
sub PopFile()
@@ -1544,7 +1624,7 @@ sub PopFile()
my $data = pop @XSStack ;
my $ThisFile = $filename ;
- my $isPipe = ($filename =~ /\|\s*$/) ;
+ my $isPipe = $data->{IsPipe};
-- $IncludedFiles{$filename}
unless $isPipe ;
diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/xsubpp.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/lib/ExtUtils/xsubpp
diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/t/more.t.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/t/more.t
--- perl-5.12.3/cpan/ExtUtils-ParseXS/t/more.t.22206 2011-01-09 15:20:53.000000000 -0500
+++ perl-5.12.3/cpan/ExtUtils-ParseXS/t/more.t 2011-01-26 16:17:03.000549001 -0500
@@ -8,7 +8,7 @@ use ExtUtils::CBuilder;
use attributes;
use overload;
-plan tests => 24;
+plan tests => 25;
my ($source_file, $obj_file, $lib_file);
@@ -42,7 +42,7 @@ SKIP: {
}
SKIP: {
- skip "no dynamic loading", 5
+ skip "no dynamic loading", 6
if !$b->have_compiler || !$Config{usedl};
my $module = 'XSMore';
$lib_file = $b->link( objects => $obj_file, module_name => $module );
@@ -88,6 +88,8 @@ SKIP: {
is XSMore::len("foo"), 3, 'the length keyword';
+ is XSMore::sum(5, 9), 14, 'the INCLUDE_COMMAND directive';
+
# Win32 needs to close the DLL before it can unlink it, but unfortunately
# dl_unload_file was missing on Win32 prior to perl change #24679!
if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) {
diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/t/XSMore.xs.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/t/XSMore.xs
--- perl-5.12.3/cpan/ExtUtils-ParseXS/t/XSMore.xs.22206 2011-01-09 15:20:53.000000000 -0500
+++ perl-5.12.3/cpan/ExtUtils-ParseXS/t/XSMore.xs 2011-01-26 16:17:22.844549001 -0500
@@ -106,6 +106,8 @@ outlist(OUTLIST int a, OUTLIST int b)
int
len(char* s, int length(s))
+INCLUDE_COMMAND: $^X -Ilib -It/lib -MIncludeTester -e IncludeTester::print_xs
+
#if 1
INCLUDE: XSInclude.xsh
diff -up perl-5.12.3/cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm.22206 perl-5.12.3/cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm
--- perl-5.12.3/cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm.22206 2011-01-26 16:38:04.432549002 -0500
+++ perl-5.12.3/cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm 2011-01-26 16:37:49.862549001 -0500
@@ -0,0 +1,20 @@
+package IncludeTester;
+use strict;
+
+sub print_xs {
+ print <<'HERE';
+
+int
+sum(a, b)
+ int a
+ int b
+ CODE:
+ RETVAL = a + b;
+ OUTPUT:
+ RETVAL
+
+HERE
+}
+
+1;
+
diff -up perl-5.12.3/MANIFEST.22206 perl-5.12.3/MANIFEST
--- perl-5.12.3/MANIFEST.22206 2011-01-26 16:36:42.933549001 -0500
+++ perl-5.12.3/MANIFEST 2011-01-26 16:50:52.762549003 -0500
@@ -1044,6 +1044,7 @@ cpan/ExtUtils-ParseXS/Changes ExtUtils
cpan/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm converts Perl XS code into C code
cpan/ExtUtils-ParseXS/lib/ExtUtils/xsubpp External subroutine preprocessor
cpan/ExtUtils-ParseXS/t/basic.t See if ExtUtils::ParseXS works
+cpan/ExtUtils-ParseXS/t/lib/IncludeTester.pm
cpan/ExtUtils-ParseXS/t/more.t Extended ExtUtils::ParseXS testing
cpan/ExtUtils-ParseXS/t/typemap Standard typemap for controlled testing
cpan/ExtUtils-ParseXS/t/usage.t ExtUtils::ParseXS tests