Extend stack in File::Glob::glob
This commit is contained in:
parent
16b2f1fec1
commit
f6b49277f0
@ -0,0 +1,76 @@
|
||||
From a6636b43dc409e4b49f369c18fedd34332fdb9ab Mon Sep 17 00:00:00 2001
|
||||
From: Father Chrysostomos <sprout@cpan.org>
|
||||
Date: Thu, 20 Sep 2012 14:25:38 -0700
|
||||
Subject: [PATCH] [perl #114984] Glob.xs: Extend stack when returning
|
||||
|
||||
If a pattern passed to File::Glob consists of a space-separated list
|
||||
of patterns, the stack will only be extended by doglob() enough for
|
||||
the list returned by each subpattern. So iterate() needs to extend
|
||||
the stack before copying the list of files from an AV to the stack.
|
||||
|
||||
This fixes a regression introduced in 5.16.0.
|
||||
---
|
||||
MANIFEST | 1 +
|
||||
ext/File-Glob/Glob.xs | 1 +
|
||||
ext/File-Glob/t/rt114984.t | 25 +++++++++++++++++++++++++
|
||||
3 files changed, 27 insertions(+)
|
||||
create mode 100644 ext/File-Glob/t/rt114984.t
|
||||
|
||||
diff --git a/MANIFEST b/MANIFEST
|
||||
index a7935fc..cceb00e 100644
|
||||
--- a/MANIFEST
|
||||
+++ b/MANIFEST
|
||||
@@ -3748,6 +3748,7 @@ ext/File-Glob/t/basic.t See if File::Glob works
|
||||
ext/File-Glob/t/case.t See if File::Glob works
|
||||
ext/File-Glob/t/global.t See if File::Glob works
|
||||
ext/File-Glob/TODO File::Glob extension todo list
|
||||
+ext/File-Glob/t/rt114984.t See if File::Glob works
|
||||
ext/File-Glob/t/taint.t See if File::Glob works
|
||||
ext/GDBM_File/GDBM_File.pm GDBM extension Perl module
|
||||
ext/GDBM_File/GDBM_File.xs GDBM extension external subroutines
|
||||
diff --git a/ext/File-Glob/Glob.xs b/ext/File-Glob/Glob.xs
|
||||
index 3ea0590..d74e7a4 100644
|
||||
--- a/ext/File-Glob/Glob.xs
|
||||
+++ b/ext/File-Glob/Glob.xs
|
||||
@@ -93,6 +93,7 @@ iterate(pTHX_ bool(*globber)(pTHX_ AV *entries, SV *patsv))
|
||||
/* chuck it all out, quick or slow */
|
||||
if (gimme == G_ARRAY) {
|
||||
if (!on_stack) {
|
||||
+ EXTEND(SP, AvFILLp(entries)+1);
|
||||
Copy(AvARRAY(entries), SP+1, AvFILLp(entries)+1, SV *);
|
||||
SP += AvFILLp(entries)+1;
|
||||
}
|
||||
diff --git a/ext/File-Glob/t/rt114984.t b/ext/File-Glob/t/rt114984.t
|
||||
new file mode 100644
|
||||
index 0000000..4229c6b
|
||||
--- /dev/null
|
||||
+++ b/ext/File-Glob/t/rt114984.t
|
||||
@@ -0,0 +1,25 @@
|
||||
+use strict;
|
||||
+use warnings;
|
||||
+use v5.16.0;
|
||||
+use File::Temp 'tempdir';
|
||||
+use File::Spec::Functions;
|
||||
+use Test::More tests => 1;
|
||||
+
|
||||
+my @md = (1..305);
|
||||
+my @mp = (1000..1205);
|
||||
+
|
||||
+my $path = tempdir uc cleanup => 1;
|
||||
+
|
||||
+foreach (@md) {
|
||||
+ open(my $f, ">", catfile $path, "md_$_.dat");
|
||||
+ close $f;
|
||||
+}
|
||||
+
|
||||
+foreach (@mp) {
|
||||
+ open(my $f, ">", catfile $path, "mp_$_.dat");
|
||||
+ close $f;
|
||||
+}
|
||||
+my @b = glob(qq{$path/mp_[0123456789]*.dat
|
||||
+ $path/md_[0123456789]*.dat});
|
||||
+is scalar(@b), @md+@mp,
|
||||
+ 'File::Glob extends the stack when returning a long list';
|
||||
--
|
||||
1.7.11.4
|
||||
|
@ -106,6 +106,9 @@ Patch16: perl-5.16.1-perl-114764-Stop-my-vars-with-attrs-from-leaking.pat
|
||||
# fixed after 5.17.4
|
||||
Patch17: perl-5.16.1-perl-105924-require-1-2.patch
|
||||
|
||||
# Extend stack in File::Glob::glob, rhbz#859332, RT#114984, fixed after 5.17.4
|
||||
Patch18: perl-5.16.1-perl-114984-Glob.xs-Extend-stack-when-returning.patch
|
||||
|
||||
# Update some of the bundled modules
|
||||
# see http://fedoraproject.org/wiki/Perl/perl.spec for instructions
|
||||
|
||||
@ -1367,6 +1370,7 @@ tarball from perl.org.
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
|
||||
#copy the example script
|
||||
cp -a %{SOURCE5} .
|
||||
@ -1576,6 +1580,7 @@ pushd %{build_archlib}/CORE/
|
||||
'Fedora Patch15: Override the Pod::Simple::parse_file (CPANRT#77530)' \
|
||||
'Fedora Patch16: Do not leak with attribute on my variable (RT#114764)' \
|
||||
'Fedora Patch17: Allow operator after numeric keyword argument (RT#105924)' \
|
||||
'Fedora Patch18: Extend stack in File::Glob::glob, (RT#114984)' \
|
||||
%{nil}
|
||||
|
||||
rm patchlevel.bak
|
||||
@ -2723,6 +2728,7 @@ sed \
|
||||
* Fri Sep 21 2012 Petr Pisar <ppisar@redhat.com> - 4:5.16.1-238
|
||||
- Do not leak with attribute on my variable (bug #858966)
|
||||
- Allow operator after numeric keyword argument (bug #859328)
|
||||
- Extend stack in File::Glob::glob (bug #859332)
|
||||
|
||||
* Thu Sep 20 2012 Petr Pisar <ppisar@redhat.com> - 4:5.16.1-237
|
||||
- Put perl-podlators into perl-core list (bug #856516)
|
||||
|
Loading…
Reference in New Issue
Block a user