5.28.1 bump
This commit is contained in:
parent
07823bf7b4
commit
14476b059d
1
.gitignore
vendored
1
.gitignore
vendored
@ -28,3 +28,4 @@ perl-5.12.1.tar.gz
|
||||
/perl-5.26.2-RC1.tar.bz2
|
||||
/perl-5.26.2.tar.bz2
|
||||
/perl-5.28.0.tar.xz
|
||||
/perl-5.28.1.tar.xz
|
||||
|
@ -1,100 +0,0 @@
|
||||
From 7b4a3fe1d488df004e3969802fe121697cd3d6e5 Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Thu, 16 Aug 2018 16:14:01 -0600
|
||||
Subject: [PATCH] Fix script run bug '1' followed by Thai digit
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This does not have a ticket, but was pointed out in
|
||||
http://nntp.perl.org/group/perl.perl5.porters/251870
|
||||
|
||||
The logic for deciding if it was needed to check if a character is a
|
||||
digit was flawed.
|
||||
|
||||
Petr Písař: Ported to 5.28.0.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
regexec.c | 46 +++++++++++++++++++++++++++++++---------------
|
||||
t/re/script_run.t | 5 +++++
|
||||
2 files changed, 36 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/regexec.c b/regexec.c
|
||||
index 95bb254..d1a3937 100644
|
||||
--- a/regexec.c
|
||||
+++ b/regexec.c
|
||||
@@ -10599,23 +10599,39 @@ Perl_isSCRIPT_RUN(pTHX_ const U8 * s, const U8 * send, const bool utf8_target)
|
||||
scripts_match:
|
||||
|
||||
/* Here, the script of the character is compatible with that of the
|
||||
- * run. Either they match exactly, or one or both can be any of
|
||||
- * several scripts, and the intersection is not empty. If the
|
||||
- * character is not a decimal digit, we are done with it. Otherwise,
|
||||
- * it could still fail if it is from a different set of 10 than seen
|
||||
- * already (or we may not have seen any, and we need to set the
|
||||
- * sequence). If we have determined a single script and that script
|
||||
- * only has one set of digits (almost all scripts are like that), then
|
||||
- * this isn't a problem, as any digit must come from the same sequence.
|
||||
- * The only scripts that have multiple sequences have been constructed
|
||||
- * to be 0 in 'script_zeros[]'.
|
||||
+ * run. That means that in most cases, it continues the script run.
|
||||
+ * Either it and the run match exactly, or one or both can be in any of
|
||||
+ * several scripts, and the intersection is not empty. But if the
|
||||
+ * character is a decimal digit, we need further handling. If we
|
||||
+ * haven't seen a digit before, it would establish what set of 10 all
|
||||
+ * must come from; and if we have established a set, we need to check
|
||||
+ * that this is in it.
|
||||
*
|
||||
- * Here we check if it is a digit. */
|
||||
+ * But there are cases we can rule out without having to look up if
|
||||
+ * this is a digit:
|
||||
+ * a. All instances of [0-9] have been dealt with earlier.
|
||||
+ * b. The next digit encoded by Unicode is 1600 code points further
|
||||
+ * on, so if the code point in this loop iteration is less than
|
||||
+ * that, it isn't a digit.
|
||||
+ * c. Most scripts that have digits have a single set of 10. If
|
||||
+ * we've encountered a digit in such a script, 'zero_of_run' is
|
||||
+ * set to the code point (call it z) whose numeric value is 0.
|
||||
+ * If the code point in this loop iteration is in the range
|
||||
+ * z..z+9, it is in the script's set of 10, and we've actually
|
||||
+ * handled it earlier in this function and won't reach this
|
||||
+ * point. But, code points in that script that aren't in that
|
||||
+ * range can't be digits, so we don't have to look any such up.
|
||||
+ * We can tell if this script is such a one by looking at
|
||||
+ * 'script_zeros[]' for it. It is non-zero iff it has a single
|
||||
+ * set of digits. This rule doesn't apply if we haven't narrowed
|
||||
+ * down the possible scripts to a single one yet. Nor if the
|
||||
+ * zero of the run is '0', as that also hasn't narrowed things
|
||||
+ * down completely */
|
||||
if ( cp >= FIRST_NON_ASCII_DECIMAL_DIGIT
|
||||
- && ( ( zero_of_run == 0
|
||||
- || ( ( script_of_char >= 0
|
||||
- && script_zeros[script_of_char] == 0)
|
||||
- || intersection))))
|
||||
+ && ( intersection
|
||||
+ || script_of_char < 0 /* Also implies an intersection */
|
||||
+ || zero_of_run == '0'
|
||||
+ || script_zeros[script_of_char] == 0))
|
||||
{
|
||||
SSize_t range_zero_index;
|
||||
range_zero_index = _invlist_search(decimals_invlist, cp);
|
||||
diff --git a/t/re/script_run.t b/t/re/script_run.t
|
||||
index ca234d9..10c7103 100644
|
||||
--- a/t/re/script_run.t
|
||||
+++ b/t/re/script_run.t
|
||||
@@ -84,6 +84,11 @@ foreach my $type ('script_run', 'sr', 'atomic_script_run', 'asr') {
|
||||
|
||||
# From UTS 39
|
||||
like("写真だけの結婚式", $script_run, "Mixed Hiragana and Han");
|
||||
+
|
||||
+ unlike "\N{THAI DIGIT FIVE}1", $script_run, "Thai digit followed by '1'";
|
||||
+ unlike "1\N{THAI DIGIT FIVE}", $script_run, "'1' followed by Thai digit ";
|
||||
+ unlike "\N{BENGALI DIGIT ZERO}\N{CHAKMA DIGIT SEVEN}", $script_run,
|
||||
+ "Two digits in same extended script but from different sets of 10";
|
||||
}
|
||||
|
||||
# Until fixed, this was skipping the '['
|
||||
--
|
||||
2.14.4
|
||||
|
@ -1,180 +0,0 @@
|
||||
From 34716e2a6ee2af96078d62b065b7785c001194be Mon Sep 17 00:00:00 2001
|
||||
From: David Mitchell <davem@iabyn.com>
|
||||
Date: Fri, 29 Jun 2018 13:37:03 +0100
|
||||
Subject: [PATCH] Perl_my_setenv(); handle integer wrap
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RT #133204
|
||||
|
||||
Wean this function off int/I32 and onto UV/Size_t.
|
||||
Also, replace all malloc-ish calls with a wrapper that does
|
||||
overflow checks,
|
||||
|
||||
In particular, it was doing (nlen + vlen + 2) which could wrap when
|
||||
the combined length of the environment variable name and value
|
||||
exceeded around 0x7fffffff.
|
||||
|
||||
The wrapper check function is probably overkill, but belt and braces...
|
||||
|
||||
NB this function has several variant parts, #ifdef'ed by platform
|
||||
type; I have blindly changed the parts that aren't compiled under linux.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
util.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++--------------------
|
||||
1 file changed, 53 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/util.c b/util.c
|
||||
index 7282dd9cfe..c5c7becc0f 100644
|
||||
--- a/util.c
|
||||
+++ b/util.c
|
||||
@@ -2061,8 +2061,40 @@ Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits,
|
||||
*(s+(nlen+1+vlen)) = '\0'
|
||||
|
||||
#ifdef USE_ENVIRON_ARRAY
|
||||
- /* VMS' my_setenv() is in vms.c */
|
||||
+
|
||||
+/* small wrapper for use by Perl_my_setenv that mallocs, or reallocs if
|
||||
+ * 'current' is non-null, with up to three sizes that are added together.
|
||||
+ * It handles integer overflow.
|
||||
+ */
|
||||
+static char *
|
||||
+S_env_alloc(void *current, Size_t l1, Size_t l2, Size_t l3, Size_t size)
|
||||
+{
|
||||
+ void *p;
|
||||
+ Size_t sl, l = l1 + l2;
|
||||
+
|
||||
+ if (l < l2)
|
||||
+ goto panic;
|
||||
+ l += l3;
|
||||
+ if (l < l3)
|
||||
+ goto panic;
|
||||
+ sl = l * size;
|
||||
+ if (sl < l)
|
||||
+ goto panic;
|
||||
+
|
||||
+ p = current
|
||||
+ ? safesysrealloc(current, sl)
|
||||
+ : safesysmalloc(sl);
|
||||
+ if (p)
|
||||
+ return (char*)p;
|
||||
+
|
||||
+ panic:
|
||||
+ croak_memory_wrap();
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/* VMS' my_setenv() is in vms.c */
|
||||
#if !defined(WIN32) && !defined(NETWARE)
|
||||
+
|
||||
void
|
||||
Perl_my_setenv(pTHX_ const char *nam, const char *val)
|
||||
{
|
||||
@@ -2078,28 +2110,27 @@ Perl_my_setenv(pTHX_ const char *nam, const char *val)
|
||||
#ifndef PERL_USE_SAFE_PUTENV
|
||||
if (!PL_use_safe_putenv) {
|
||||
/* most putenv()s leak, so we manipulate environ directly */
|
||||
- I32 i;
|
||||
- const I32 len = strlen(nam);
|
||||
- int nlen, vlen;
|
||||
+ UV i;
|
||||
+ Size_t vlen, nlen = strlen(nam);
|
||||
|
||||
/* where does it go? */
|
||||
for (i = 0; environ[i]; i++) {
|
||||
- if (strnEQ(environ[i],nam,len) && environ[i][len] == '=')
|
||||
+ if (strnEQ(environ[i], nam, nlen) && environ[i][nlen] == '=')
|
||||
break;
|
||||
}
|
||||
|
||||
if (environ == PL_origenviron) { /* need we copy environment? */
|
||||
- I32 j;
|
||||
- I32 max;
|
||||
+ UV j, max;
|
||||
char **tmpenv;
|
||||
|
||||
max = i;
|
||||
while (environ[max])
|
||||
max++;
|
||||
- tmpenv = (char**)safesysmalloc((max+2) * sizeof(char*));
|
||||
+ /* XXX shouldn't that be max+1 rather than max+2 ??? - DAPM */
|
||||
+ tmpenv = (char**)S_env_alloc(NULL, max, 2, 0, sizeof(char*));
|
||||
for (j=0; j<max; j++) { /* copy environment */
|
||||
- const int len = strlen(environ[j]);
|
||||
- tmpenv[j] = (char*)safesysmalloc((len+1)*sizeof(char));
|
||||
+ const Size_t len = strlen(environ[j]);
|
||||
+ tmpenv[j] = S_env_alloc(NULL, len, 1, 0, 1);
|
||||
Copy(environ[j], tmpenv[j], len+1, char);
|
||||
}
|
||||
tmpenv[max] = NULL;
|
||||
@@ -2118,15 +2149,15 @@ Perl_my_setenv(pTHX_ const char *nam, const char *val)
|
||||
#endif
|
||||
}
|
||||
if (!environ[i]) { /* does not exist yet */
|
||||
- environ = (char**)safesysrealloc(environ, (i+2) * sizeof(char*));
|
||||
+ environ = (char**)S_env_alloc(environ, i, 2, 0, sizeof(char*));
|
||||
environ[i+1] = NULL; /* make sure it's null terminated */
|
||||
}
|
||||
else
|
||||
safesysfree(environ[i]);
|
||||
- nlen = strlen(nam);
|
||||
+
|
||||
vlen = strlen(val);
|
||||
|
||||
- environ[i] = (char*)safesysmalloc((nlen+vlen+2) * sizeof(char));
|
||||
+ environ[i] = S_env_alloc(NULL, nlen, vlen, 2, 1);
|
||||
/* all that work just for this */
|
||||
my_setenv_format(environ[i], nam, nlen, val, vlen);
|
||||
} else {
|
||||
@@ -2150,22 +2181,21 @@ Perl_my_setenv(pTHX_ const char *nam, const char *val)
|
||||
if (environ) /* old glibc can crash with null environ */
|
||||
(void)unsetenv(nam);
|
||||
} else {
|
||||
- const int nlen = strlen(nam);
|
||||
- const int vlen = strlen(val);
|
||||
- char * const new_env =
|
||||
- (char*)safesysmalloc((nlen + vlen + 2) * sizeof(char));
|
||||
+ const Size_t nlen = strlen(nam);
|
||||
+ const Size_t vlen = strlen(val);
|
||||
+ char * const new_env = S_env_alloc(NULL, nlen, vlen, 2, 1);
|
||||
my_setenv_format(new_env, nam, nlen, val, vlen);
|
||||
(void)putenv(new_env);
|
||||
}
|
||||
# else /* ! HAS_UNSETENV */
|
||||
char *new_env;
|
||||
- const int nlen = strlen(nam);
|
||||
- int vlen;
|
||||
+ const Size_t nlen = strlen(nam);
|
||||
+ Size_t vlen;
|
||||
if (!val) {
|
||||
val = "";
|
||||
}
|
||||
vlen = strlen(val);
|
||||
- new_env = (char*)safesysmalloc((nlen + vlen + 2) * sizeof(char));
|
||||
+ new_env = S_env_alloc(NULL, nlen, vlen, 2, 1);
|
||||
/* all that work just for this */
|
||||
my_setenv_format(new_env, nam, nlen, val, vlen);
|
||||
(void)putenv(new_env);
|
||||
@@ -2187,14 +2217,14 @@ Perl_my_setenv(pTHX_ const char *nam, const char *val)
|
||||
{
|
||||
dVAR;
|
||||
char *envstr;
|
||||
- const int nlen = strlen(nam);
|
||||
- int vlen;
|
||||
+ const Size_t nlen = strlen(nam);
|
||||
+ Size_t vlen;
|
||||
|
||||
if (!val) {
|
||||
val = "";
|
||||
}
|
||||
vlen = strlen(val);
|
||||
- Newx(envstr, nlen+vlen+2, char);
|
||||
+ envstr = S_env_alloc(NULL, nlen, vlen, 2, 1);
|
||||
my_setenv_format(envstr, nam, nlen, val, vlen);
|
||||
(void)PerlEnv_putenv(envstr);
|
||||
Safefree(envstr);
|
||||
--
|
||||
2.14.4
|
||||
|
@ -1,103 +0,0 @@
|
||||
From 6b877bbd2c071b3e0659fab552a74dc2ff7e08fb Mon Sep 17 00:00:00 2001
|
||||
From: David Mitchell <davem@iabyn.com>
|
||||
Date: Sat, 14 Jul 2018 10:47:04 +0100
|
||||
Subject: [PATCH] treat when(index() > -1) as a boolean expression
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RT #133368
|
||||
|
||||
when(X) is normally compiled as when($_ ~~ X) *except* when X appears to
|
||||
be a boolean expression, in which case it's used directly.
|
||||
|
||||
5.28.0 introduced an optimisation whereby comparisons involving index
|
||||
like
|
||||
|
||||
index(...) != -1
|
||||
|
||||
eliminated the comparison, and pp_index() returned a boolean value
|
||||
directly. This defeated the 'look for a boolean op' mechanism, and so
|
||||
|
||||
when(index(...) != -1)
|
||||
|
||||
and similar were being incorrectly compiled as
|
||||
|
||||
when($_ ~~ (index(...) != -1))
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
op.c | 8 +++++++-
|
||||
t/op/switch.t | 23 ++++++++++++++++++++++-
|
||||
2 files changed, 29 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/op.c b/op.c
|
||||
index a05a1319d4..ddeb484b64 100644
|
||||
--- a/op.c
|
||||
+++ b/op.c
|
||||
@@ -9072,6 +9072,13 @@ S_looks_like_bool(pTHX_ const OP *o)
|
||||
case OP_FLOP:
|
||||
|
||||
return TRUE;
|
||||
+
|
||||
+ case OP_INDEX:
|
||||
+ case OP_RINDEX:
|
||||
+ /* optimised-away (index() != -1) or similar comparison */
|
||||
+ if (o->op_private & OPpTRUEBOOL)
|
||||
+ return TRUE;
|
||||
+ return FALSE;
|
||||
|
||||
case OP_CONST:
|
||||
/* Detect comparisons that have been optimized away */
|
||||
@@ -9081,7 +9088,6 @@ S_looks_like_bool(pTHX_ const OP *o)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
-
|
||||
/* FALLTHROUGH */
|
||||
default:
|
||||
return FALSE;
|
||||
diff --git a/t/op/switch.t b/t/op/switch.t
|
||||
index e5385df0b4..6ff69e0bce 100644
|
||||
--- a/t/op/switch.t
|
||||
+++ b/t/op/switch.t
|
||||
@@ -10,7 +10,7 @@ use strict;
|
||||
use warnings;
|
||||
no warnings 'experimental::smartmatch';
|
||||
|
||||
-plan tests => 195;
|
||||
+plan tests => 197;
|
||||
|
||||
# The behaviour of the feature pragma should be tested by lib/feature.t
|
||||
# using the tests in t/lib/feature/*. This file tests the behaviour of
|
||||
@@ -1358,6 +1358,27 @@ given("xyz") {
|
||||
"scalar value of false when";
|
||||
}
|
||||
|
||||
+# RT #133368
|
||||
+# index() and rindex() comparisons such as '> -1' are optimised away. Make
|
||||
+# sure that they're still treated as a direct boolean expression rather
|
||||
+# than when(X) being implicitly converted to when($_ ~~ X)
|
||||
+
|
||||
+{
|
||||
+ my $s = "abc";
|
||||
+ my $ok = 0;
|
||||
+ given("xyz") {
|
||||
+ when (index($s, 'a') > -1) { $ok = 1; }
|
||||
+ }
|
||||
+ ok($ok, "RT #133368 index");
|
||||
+
|
||||
+ $ok = 0;
|
||||
+ given("xyz") {
|
||||
+ when (rindex($s, 'a') > -1) { $ok = 1; }
|
||||
+ }
|
||||
+ ok($ok, "RT #133368 rindex");
|
||||
+}
|
||||
+
|
||||
+
|
||||
# Okay, that'll do for now. The intricacies of the smartmatch
|
||||
# semantics are tested in t/op/smartmatch.t. Taintedness of
|
||||
# returned values is checked in t/op/taint.t.
|
||||
--
|
||||
2.14.4
|
||||
|
@ -1,103 +0,0 @@
|
||||
From 3d5e9c119db6b727684fe75dfcfe5831c4351bec Mon Sep 17 00:00:00 2001
|
||||
From: Tony Cook <tony@develop-help.com>
|
||||
Date: Mon, 2 Jul 2018 10:43:19 +1000
|
||||
Subject: [PATCH 2/2] (perl #133314) always close the directory handle on clean
|
||||
up
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Previously the directory handle was only closed if the rest of the
|
||||
magic free clean up is done, but in most success cases that code
|
||||
doesn't run, leaking the directory handle.
|
||||
|
||||
So always close the directory if our AV is available.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
doio.c | 56 +++++++++++++++++++++++++++++++-------------------------
|
||||
1 file changed, 31 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/doio.c b/doio.c
|
||||
index 4b8923f77c..16daf9fd11 100644
|
||||
--- a/doio.c
|
||||
+++ b/doio.c
|
||||
@@ -1163,44 +1163,50 @@ S_argvout_free(pTHX_ SV *io, MAGIC *mg) {
|
||||
|
||||
/* mg_obj can be NULL if a thread is created with the handle open, in which
|
||||
case we leave any clean up to the parent thread */
|
||||
- if (mg->mg_obj && IoIFP(io)) {
|
||||
- SV **pid_psv;
|
||||
+ if (mg->mg_obj) {
|
||||
#ifdef ARGV_USE_ATFUNCTIONS
|
||||
SV **dir_psv;
|
||||
DIR *dir;
|
||||
+
|
||||
+ dir_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_ORIG_DIRP, FALSE);
|
||||
+ assert(dir_psv && *dir_psv && SvIOK(*dir_psv));
|
||||
+ dir = INT2PTR(DIR *, SvIV(*dir_psv));
|
||||
#endif
|
||||
- PerlIO *iop = IoIFP(io);
|
||||
+ if (IoIFP(io)) {
|
||||
+ SV **pid_psv;
|
||||
+ PerlIO *iop = IoIFP(io);
|
||||
|
||||
- assert(SvTYPE(mg->mg_obj) == SVt_PVAV);
|
||||
+ assert(SvTYPE(mg->mg_obj) == SVt_PVAV);
|
||||
|
||||
- pid_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_ORIG_PID, FALSE);
|
||||
+ pid_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_ORIG_PID, FALSE);
|
||||
|
||||
- assert(pid_psv && *pid_psv);
|
||||
+ assert(pid_psv && *pid_psv);
|
||||
|
||||
- if (SvIV(*pid_psv) == (IV)PerlProc_getpid()) {
|
||||
- /* if we get here the file hasn't been closed explicitly by the
|
||||
- user and hadn't been closed implicitly by nextargv(), so
|
||||
- abandon the edit */
|
||||
- SV **temp_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_TEMP_NAME, FALSE);
|
||||
- const char *temp_pv = SvPVX(*temp_psv);
|
||||
+ if (SvIV(*pid_psv) == (IV)PerlProc_getpid()) {
|
||||
+ /* if we get here the file hasn't been closed explicitly by the
|
||||
+ user and hadn't been closed implicitly by nextargv(), so
|
||||
+ abandon the edit */
|
||||
+ SV **temp_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_TEMP_NAME, FALSE);
|
||||
+ const char *temp_pv = SvPVX(*temp_psv);
|
||||
|
||||
- assert(temp_psv && *temp_psv && SvPOK(*temp_psv));
|
||||
- (void)PerlIO_close(iop);
|
||||
- IoIFP(io) = IoOFP(io) = NULL;
|
||||
+ assert(temp_psv && *temp_psv && SvPOK(*temp_psv));
|
||||
+ (void)PerlIO_close(iop);
|
||||
+ IoIFP(io) = IoOFP(io) = NULL;
|
||||
#ifdef ARGV_USE_ATFUNCTIONS
|
||||
- dir_psv = av_fetch((AV*)mg->mg_obj, ARGVMG_ORIG_DIRP, FALSE);
|
||||
- assert(dir_psv && *dir_psv && SvIOK(*dir_psv));
|
||||
- dir = INT2PTR(DIR *, SvIV(*dir_psv));
|
||||
- if (dir) {
|
||||
- if (unlinkat(my_dirfd(dir), temp_pv, 0) < 0 &&
|
||||
- NotSupported(errno))
|
||||
- (void)UNLINK(temp_pv);
|
||||
- closedir(dir);
|
||||
- }
|
||||
+ if (dir) {
|
||||
+ if (unlinkat(my_dirfd(dir), temp_pv, 0) < 0 &&
|
||||
+ NotSupported(errno))
|
||||
+ (void)UNLINK(temp_pv);
|
||||
+ }
|
||||
#else
|
||||
- (void)UNLINK(temp_pv);
|
||||
+ (void)UNLINK(temp_pv);
|
||||
#endif
|
||||
+ }
|
||||
}
|
||||
+#ifdef ARGV_USE_ATFUNCTIONS
|
||||
+ if (dir)
|
||||
+ closedir(dir);
|
||||
+#endif
|
||||
}
|
||||
|
||||
return 0;
|
||||
--
|
||||
2.14.4
|
||||
|
32
perl.spec
32
perl.spec
@ -1,4 +1,4 @@
|
||||
%global perl_version 5.28.0
|
||||
%global perl_version 5.28.1
|
||||
%global perl_epoch 4
|
||||
%global perl_arch_stem -thread-multi
|
||||
%global perl_archname %{_arch}-%{_os}%{perl_arch_stem}
|
||||
@ -81,7 +81,7 @@ License: GPL+ or Artistic
|
||||
Epoch: %{perl_epoch}
|
||||
Version: %{perl_version}
|
||||
# release number must be even higher, because dual-lived modules will be broken otherwise
|
||||
Release: 425%{?dist}
|
||||
Release: 426%{?dist}
|
||||
Summary: Practical Extraction and Report Language
|
||||
Url: https://www.perl.org/
|
||||
Source0: https://www.cpan.org/src/5.0/perl-%{perl_version}.tar.xz
|
||||
@ -153,10 +153,6 @@ Patch14: perl-5.27.8-hints-linux-Add-lphtread-to-lddlflags.patch
|
||||
# Adjust tests to gdbm-1.15, RT#133295
|
||||
Patch15: perl-5.29.0-Remove-ext-GDBM_File-t-fatal.t.patch
|
||||
|
||||
# Fix an integer wrap when allocating memory for an environment variable,
|
||||
# RT#133204, in upstream after 5.29.0
|
||||
Patch16: perl-5.29.0-Perl_my_setenv-handle-integer-wrap.patch
|
||||
|
||||
# Fix printing a warning about a wide character when matching a regular
|
||||
# expression while ISO-8859-1 locale is in effect, in upstream after 5.29.0
|
||||
Patch17: perl-5.29.0-regexec.c-Call-macro-with-correct-args.patch
|
||||
@ -165,17 +161,12 @@ Patch17: perl-5.29.0-regexec.c-Call-macro-with-correct-args.patch
|
||||
# in upstream after 5.29.0
|
||||
Patch18: perl-5.29.0-perl.h-Add-parens-around-macro-arguments.patch
|
||||
|
||||
# Fix index() and rindex() optimization in given-when boolean context,
|
||||
# RT#133368, in upstream after 5.29.0
|
||||
Patch19: perl-5.29.0-treat-when-index-1-as-a-boolean-expression.patch
|
||||
|
||||
# Fix build conditions in locale.c, in upstream after 5.29.0
|
||||
Patch20: perl-5.29.0-locale.c-Fix-conditional-compilation.patch
|
||||
|
||||
# Fix a file descriptor leak in in-place edits, RT#133314,
|
||||
# in upstream after 5.29.1
|
||||
Patch21: perl-5.29.1-perl-133314-test-for-handle-leaks-from-in-place-edit.patch
|
||||
Patch22: perl-5.29.1-perl-133314-always-close-the-directory-handle-on-cle.patch
|
||||
|
||||
# Fix a buffer overrun in deprecated S_is_utf8_common(),
|
||||
# in upstream after 5.29.1
|
||||
@ -184,10 +175,6 @@ Patch23: perl-5.29.1-utf8.c-Make-safer-a-deprecated-function.patch
|
||||
# Fix a time race in Time-HiRes/t/itimer.t test, in upstream after 5.29.1
|
||||
Patch24: perl-5.29.1-Time-HiRes-t-itimer.t-avoid-race-condition.patch
|
||||
|
||||
# Fix matching an ASCII digit followed by a non-ASCII digit using a script
|
||||
# run, in upstream after 5.29.1
|
||||
Patch25: perl-5.28.0-Fix-script-run-bug-1-followed-by-Thai-digit.patch
|
||||
|
||||
# Fix Time::Piece to handle objects in overloaded methods correctly,
|
||||
# in upstream after 5.29.1
|
||||
Patch26: perl-5.29.1-Update-Time-Piece-to-CPAN-version-1.33.patch
|
||||
@ -255,7 +242,7 @@ BuildRequires: rsyslog
|
||||
|
||||
|
||||
# compat macro needed for rebuild
|
||||
%global perl_compat perl(:MODULE_COMPAT_5.28.0)
|
||||
%global perl_compat perl(:MODULE_COMPAT_5.28.1)
|
||||
|
||||
Requires: %perl_compat
|
||||
Requires: perl-interpreter%{?_isa} = %{perl_epoch}:%{perl_version}-%{release}
|
||||
@ -407,6 +394,7 @@ Summary: The libraries for the perl run-time
|
||||
License: (GPL+ or Artistic) and HSRL and MIT and UCD
|
||||
# Compat provides
|
||||
Provides: %perl_compat
|
||||
Provides: perl(:MODULE_COMPAT_5.28.0)
|
||||
# Interpreter version to fulfil required genersted from "require 5.006;"
|
||||
Provides: perl(:VERSION) = %{perl_version}
|
||||
# Integeres are 64-bit on all platforms
|
||||
@ -2775,16 +2763,12 @@ Perl extension for Version Objects
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
%patch22 -p1
|
||||
%patch23 -p1
|
||||
%patch24 -p1
|
||||
%patch25 -p1
|
||||
%patch26 -p1
|
||||
%patch27 -p1
|
||||
%patch28 -p1
|
||||
@ -2812,16 +2796,12 @@ perl -x patchlevel.h \
|
||||
'Fedora Patch13: Fix executing arybase::_tie_it() in Safe compartement (RT#131588)' \
|
||||
'Fedora Patch14: Link XS modules to pthread library to fix linking with -z defs' \
|
||||
'Fedora Patch15: Adjust tests to gdbm-1.15 (RT#133295)' \
|
||||
'Fedora Patch16: Fix an integer wrap when allocating memory for an environment variable (RT#133204)' \
|
||||
'Fedora Patch17: Fix printing a warning about a wide character when matching a regular expression while ISO-8859-1 locale is in effect' \
|
||||
'Fedora Patch18: Fix invoking a check for wide characters while ISO-8859-1 locale is in effect' \
|
||||
'Fedora Patch19: Fix index() and rindex() optimization in given-when boolean context (RT#133368)' \
|
||||
'Fedora Patch20: Fix build conditions in locale.c' \
|
||||
'Fedora Patch21: Fix a file descriptor leak in in-place edits (RT#133314)' \
|
||||
'Fedora Patch22: Fix a file descriptor leak in in-place edits (RT#133314)' \
|
||||
'Fedora Patch23: Fix a buffer overrun in deprecated S_is_utf8_common()' \
|
||||
'Fedora Patch24: Fix a time race in Time-HiRes/t/itimer.t test' \
|
||||
'Fedora Patch25: Fix matching an ASCII digit followed by a non-ASCII digit using a script run' \
|
||||
'Fedora Patch26: Fix Time::Piece to handle objects in overloaded methods correctly' \
|
||||
'Fedora Patch27: Fix an assignment to a lexical variable in multiconcatenation expressions (RT#133441)' \
|
||||
'Fedora Patch28: Fix a spurious warning about uninitialized value in warn (RT#132683)' \
|
||||
@ -5114,6 +5094,10 @@ popd
|
||||
|
||||
# Old changelog entries are preserved in CVS.
|
||||
%changelog
|
||||
* Fri Nov 30 2018 Jitka Plesnikova <jplesnik@redhat.com> - 4:5.28.1-426
|
||||
- 5.28.1 bump
|
||||
- Fix CVE-2018-18312 (heap-buffer-overflow write in regcomp.c)
|
||||
|
||||
* Fri Nov 02 2018 Petr Pisar <ppisar@redhat.com> - 4:5.28.0-425
|
||||
- Install Encode developmental files when installing complete Perl
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (perl-5.28.0.tar.xz) = de701e37371b81cecf06098bb2c09017bde9cebaf9537d58838d0adf605ac2ecf739897b0a73576a7adb74d4cf65591ec4d2ed1f94b7191e695f88cb7e214a39
|
||||
SHA512 (perl-5.28.1.tar.xz) = 6d18e9684c3a15bea2ccd28f116d1829c3acd5547551ee3539f0060c0d1a75246dfe570dfb9d5f00625a994a0afb0cbd6a5a5f9a407fef75a421e7dbc6491b43
|
||||
|
Loading…
Reference in New Issue
Block a user