Compare commits
39 Commits
master
...
f33-riscv6
Author | SHA1 | Date |
---|---|---|
David Abdurachmanov | 4d8011fe1a | |
Petr Písař | 42aff81459 | |
Jitka Plesnikova | 43ae47ecad | |
David Abdurachmanov | 270cd15664 | |
Petr Písař | 0997054e7f | |
Petr Písař | 28d3569ee3 | |
Petr Písař | db5a29fe74 | |
Petr Písař | a4b995cfac | |
Petr Písař | 6aaa006278 | |
Petr Písař | 88021e5c12 | |
Petr Písař | 35e89dc818 | |
Petr Písař | 2765564ee8 | |
Petr Písař | f7a3fc6325 | |
Petr Písař | 7d41994868 | |
Petr Písař | 4cf5cd049f | |
Petr Písař | f885008b65 | |
Petr Písař | 775391db79 | |
Jitka Plesnikova | 66217eb370 | |
Jitka Plesnikova | 0a392f8488 | |
David Abdurachmanov | b2cd16fb61 | |
Petr Písař | fcce4c6dc9 | |
Petr Písař | d87c620e8c | |
Petr Písař | 7a6c4e5558 | |
Petr Písař | aa2b3ecfb3 | |
Petr Písař | 2380beac04 | |
Petr Písař | aa85b71ce2 | |
Petr Písař | f923a492e2 | |
Petr Písař | eaba60eb05 | |
Petr Písař | 9c256e3fab | |
Petr Písař | b400659eb8 | |
Petr Písař | 0ca0497816 | |
Petr Písař | faeef30adc | |
Petr Písař | 58858401db | |
Petr Písař | 01fe643f98 | |
Petr Písař | a240a6b4de | |
Petr Písař | 29050d3ebf | |
Petr Písař | 143c648c54 | |
Petr Písař | 5131281985 | |
Jeff Law | c3c998ad17 |
|
@ -35,3 +35,4 @@ perl-5.12.1.tar.gz
|
|||
/perl-5.30.2.tar.xz
|
||||
/perl-5.30.3.tar.xz
|
||||
/perl-5.32.0.tar.xz
|
||||
/perl-5.32.1.tar.xz
|
||||
|
|
|
@ -0,0 +1,175 @@
|
|||
From bafffe7f2ca587960177ed03216e2d5692fe6143 Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Wed, 19 Aug 2020 11:57:17 -0600
|
||||
Subject: [PATCH] Add av_count()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This returns the number of elements in an array in a clearly named
|
||||
function.
|
||||
|
||||
av_top_index(), av_tindex() are clearly named, but are less than ideal,
|
||||
and came about because no one back then thought of this one, until now
|
||||
Paul Evans did.
|
||||
|
||||
Petr Písař: Port 87306e0674dfe3af29804b4641347cd5ac9b0521 to 5.32.0.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
av.c | 17 ++++++++++++++---
|
||||
av.h | 3 ++-
|
||||
embed.fnc | 3 ++-
|
||||
embed.h | 2 +-
|
||||
inline.h | 16 ++++++++++++----
|
||||
proto.h | 11 ++++++++---
|
||||
6 files changed, 39 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/av.c b/av.c
|
||||
index 27b2f12..b5ddaca 100644
|
||||
--- a/av.c
|
||||
+++ b/av.c
|
||||
@@ -814,9 +814,10 @@ The Perl equivalent for this is C<$#myarray>.
|
||||
=for apidoc av_len
|
||||
|
||||
Same as L</av_top_index>. Note that, unlike what the name implies, it returns
|
||||
-the highest index in the array, so to get the size of the array you need to use
|
||||
-S<C<av_len(av) + 1>>. This is unlike L</sv_len>, which returns what you would
|
||||
-expect.
|
||||
+the highest index in the array. This is unlike L</sv_len>, which returns what
|
||||
+you would expect.
|
||||
+
|
||||
+B<To get the true number of elements in the array, instead use C<L</av_count>>>.
|
||||
|
||||
=cut
|
||||
*/
|
||||
@@ -1089,6 +1090,16 @@ Perl_av_nonelem(pTHX_ AV *av, SSize_t ix) {
|
||||
return sv;
|
||||
}
|
||||
|
||||
+SSize_t
|
||||
+Perl_av_top_index(pTHX_ AV *av)
|
||||
+{
|
||||
+ PERL_ARGS_ASSERT_AV_TOP_INDEX;
|
||||
+ assert(SvTYPE(av) == SVt_PVAV);
|
||||
+
|
||||
+ return AvFILL(av);
|
||||
+}
|
||||
+
|
||||
+
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
diff --git a/av.h b/av.h
|
||||
index 5e39c42..90ebfff 100644
|
||||
--- a/av.h
|
||||
+++ b/av.h
|
||||
@@ -81,7 +81,8 @@ Same as C<av_top_index()>.
|
||||
|
||||
#define AvFILL(av) ((SvRMAGICAL((const SV *) (av))) \
|
||||
? mg_size(MUTABLE_SV(av)) : AvFILLp(av))
|
||||
-#define av_tindex(av) av_top_index(av)
|
||||
+#define av_top_index(av) AvFILL(av)
|
||||
+#define av_tindex(av) av_top_index(av)
|
||||
|
||||
/* Note that it doesn't make sense to do this:
|
||||
* SvGETMAGIC(av); IV x = av_tindex_nomg(av);
|
||||
diff --git a/embed.fnc b/embed.fnc
|
||||
index 589ab1a..789cd3c 100644
|
||||
--- a/embed.fnc
|
||||
+++ b/embed.fnc
|
||||
@@ -541,7 +541,8 @@ Apd |void |av_push |NN AV *av|NN SV *val
|
||||
EXp |void |av_reify |NN AV *av
|
||||
ApdR |SV* |av_shift |NN AV *av
|
||||
Apd |SV** |av_store |NN AV *av|SSize_t key|NULLOK SV *val
|
||||
-AidRp |SSize_t|av_top_index |NN AV *av
|
||||
+AMdRp |SSize_t|av_top_index |NN AV *av
|
||||
+AidRp |Size_t |av_count |NN AV *av
|
||||
AmdR |SSize_t|av_tindex |NN AV *av
|
||||
Apd |void |av_undef |NN AV *av
|
||||
Apdoex |SV** |av_create_and_unshift_one|NN AV **const avp|NN SV *const val
|
||||
diff --git a/embed.h b/embed.h
|
||||
index 182b12a..329ac40 100644
|
||||
--- a/embed.h
|
||||
+++ b/embed.h
|
||||
@@ -48,6 +48,7 @@
|
||||
#define atfork_lock Perl_atfork_lock
|
||||
#define atfork_unlock Perl_atfork_unlock
|
||||
#define av_clear(a) Perl_av_clear(aTHX_ a)
|
||||
+#define av_count(a) Perl_av_count(aTHX_ a)
|
||||
#define av_delete(a,b,c) Perl_av_delete(aTHX_ a,b,c)
|
||||
#define av_exists(a,b) Perl_av_exists(aTHX_ a,b)
|
||||
#define av_extend(a,b) Perl_av_extend(aTHX_ a,b)
|
||||
@@ -59,7 +60,6 @@
|
||||
#define av_push(a,b) Perl_av_push(aTHX_ a,b)
|
||||
#define av_shift(a) Perl_av_shift(aTHX_ a)
|
||||
#define av_store(a,b,c) Perl_av_store(aTHX_ a,b,c)
|
||||
-#define av_top_index(a) Perl_av_top_index(aTHX_ a)
|
||||
#define av_undef(a) Perl_av_undef(aTHX_ a)
|
||||
#define av_unshift(a,b) Perl_av_unshift(aTHX_ a,b)
|
||||
#define block_end(a,b) Perl_block_end(aTHX_ a,b)
|
||||
diff --git a/inline.h b/inline.h
|
||||
index 27005d2..35af18a 100644
|
||||
--- a/inline.h
|
||||
+++ b/inline.h
|
||||
@@ -39,13 +39,21 @@ SOFTWARE.
|
||||
|
||||
/* ------------------------------- av.h ------------------------------- */
|
||||
|
||||
-PERL_STATIC_INLINE SSize_t
|
||||
-Perl_av_top_index(pTHX_ AV *av)
|
||||
+/*
|
||||
+=for apidoc av_count
|
||||
+Returns the number of elements in the array C<av>. This is the true length of
|
||||
+the array, including any undefined elements. It is always the same as
|
||||
+S<C<av_top_index(av) + 1>>.
|
||||
+
|
||||
+=cut
|
||||
+*/
|
||||
+PERL_STATIC_INLINE Size_t
|
||||
+Perl_av_count(pTHX_ AV *av)
|
||||
{
|
||||
- PERL_ARGS_ASSERT_AV_TOP_INDEX;
|
||||
+ PERL_ARGS_ASSERT_AV_COUNT;
|
||||
assert(SvTYPE(av) == SVt_PVAV);
|
||||
|
||||
- return AvFILL(av);
|
||||
+ return AvFILL(av) + 1;
|
||||
}
|
||||
|
||||
/* ------------------------------- cv.h ------------------------------- */
|
||||
diff --git a/proto.h b/proto.h
|
||||
index 02ef4ed..83ba098 100644
|
||||
--- a/proto.h
|
||||
+++ b/proto.h
|
||||
@@ -219,6 +219,13 @@ PERL_CALLCONV SV** Perl_av_arylen_p(pTHX_ AV *av);
|
||||
PERL_CALLCONV void Perl_av_clear(pTHX_ AV *av);
|
||||
#define PERL_ARGS_ASSERT_AV_CLEAR \
|
||||
assert(av)
|
||||
+#ifndef PERL_NO_INLINE_FUNCTIONS
|
||||
+PERL_STATIC_INLINE Size_t Perl_av_count(pTHX_ AV *av)
|
||||
+ __attribute__warn_unused_result__;
|
||||
+#define PERL_ARGS_ASSERT_AV_COUNT \
|
||||
+ assert(av)
|
||||
+#endif
|
||||
+
|
||||
PERL_CALLCONV void Perl_av_create_and_push(pTHX_ AV **const avp, SV *const val);
|
||||
#define PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH \
|
||||
assert(avp); assert(val)
|
||||
@@ -284,12 +291,10 @@ PERL_CALLCONV SV** Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val);
|
||||
__attribute__warn_unused_result__; */
|
||||
#define PERL_ARGS_ASSERT_AV_TINDEX
|
||||
|
||||
-#ifndef PERL_NO_INLINE_FUNCTIONS
|
||||
-PERL_STATIC_INLINE SSize_t Perl_av_top_index(pTHX_ AV *av)
|
||||
+PERL_CALLCONV SSize_t Perl_av_top_index(pTHX_ AV *av)
|
||||
__attribute__warn_unused_result__;
|
||||
#define PERL_ARGS_ASSERT_AV_TOP_INDEX \
|
||||
assert(av)
|
||||
-#endif
|
||||
|
||||
PERL_CALLCONV void Perl_av_undef(pTHX_ AV *av);
|
||||
#define PERL_ARGS_ASSERT_AV_UNDEF \
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,196 @@
|
|||
From d7504df2a5d8985f2a8b04f17acff5e324572c39 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Leach <richardleach@users.noreply.github.com>
|
||||
Date: Sun, 11 Oct 2020 12:26:27 +0100
|
||||
Subject: [PATCH] pp_split: no SWITCHSTACK in @ary = split(...) optimisation
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Petr Písař: 607eaf26a99ff76ab48877e68f1d7b005dc51575 ported to 5.32.0.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
pp.c | 89 +++++++++++++++++++++++++++++-----------------------
|
||||
t/op/split.t | 23 +++++++++++++-
|
||||
2 files changed, 72 insertions(+), 40 deletions(-)
|
||||
|
||||
diff --git a/pp.c b/pp.c
|
||||
index df80830..e4863d3 100644
|
||||
--- a/pp.c
|
||||
+++ b/pp.c
|
||||
@@ -5985,6 +5985,7 @@ PP(pp_split)
|
||||
|
||||
/* handle @ary = split(...) optimisation */
|
||||
if (PL_op->op_private & OPpSPLIT_ASSIGN) {
|
||||
+ realarray = 1;
|
||||
if (!(PL_op->op_flags & OPf_STACKED)) {
|
||||
if (PL_op->op_private & OPpSPLIT_LEX) {
|
||||
if (PL_op->op_private & OPpLVAL_INTRO)
|
||||
@@ -6007,26 +6008,10 @@ PP(pp_split)
|
||||
oldsave = PL_savestack_ix;
|
||||
}
|
||||
|
||||
- realarray = 1;
|
||||
- PUTBACK;
|
||||
- av_extend(ary,0);
|
||||
- (void)sv_2mortal(SvREFCNT_inc_simple_NN(sv));
|
||||
- av_clear(ary);
|
||||
- SPAGAIN;
|
||||
if ((mg = SvTIED_mg((const SV *)ary, PERL_MAGIC_tied))) {
|
||||
PUSHMARK(SP);
|
||||
XPUSHs(SvTIED_obj(MUTABLE_SV(ary), mg));
|
||||
- }
|
||||
- else {
|
||||
- if (!AvREAL(ary)) {
|
||||
- I32 i;
|
||||
- AvREAL_on(ary);
|
||||
- AvREIFY_off(ary);
|
||||
- for (i = AvFILLp(ary); i >= 0; i--)
|
||||
- AvARRAY(ary)[i] = &PL_sv_undef; /* don't free mere refs */
|
||||
- }
|
||||
- /* temporarily switch stacks */
|
||||
- SAVESWITCHSTACK(PL_curstack, ary);
|
||||
+ } else {
|
||||
make_mortal = 0;
|
||||
}
|
||||
}
|
||||
@@ -6358,29 +6343,56 @@ PP(pp_split)
|
||||
LEAVE_SCOPE(oldsave); /* may undo an earlier SWITCHSTACK */
|
||||
SPAGAIN;
|
||||
if (realarray) {
|
||||
- if (!mg) {
|
||||
- if (SvSMAGICAL(ary)) {
|
||||
- PUTBACK;
|
||||
+ if (!mg) {
|
||||
+ PUTBACK;
|
||||
+ if(AvREAL(ary)) {
|
||||
+ if (av_count(ary) > 0)
|
||||
+ av_clear(ary);
|
||||
+ } else {
|
||||
+ AvREAL_on(ary);
|
||||
+ AvREIFY_off(ary);
|
||||
+
|
||||
+ if (AvMAX(ary) > -1) {
|
||||
+ /* don't free mere refs */
|
||||
+ Zero(AvARRAY(ary), AvMAX(ary), SV*);
|
||||
+ }
|
||||
+ }
|
||||
+ if(AvMAX(ary) < iters)
|
||||
+ av_extend(ary,iters);
|
||||
+ SPAGAIN;
|
||||
+
|
||||
+ /* Need to copy the SV*s from the stack into ary */
|
||||
+ Copy(SP + 1 - iters, AvARRAY(ary), iters, SV*);
|
||||
+ AvFILLp(ary) = iters - 1;
|
||||
+
|
||||
+ if (SvSMAGICAL(ary)) {
|
||||
+ PUTBACK;
|
||||
mg_set(MUTABLE_SV(ary));
|
||||
SPAGAIN;
|
||||
- }
|
||||
- if (gimme == G_ARRAY) {
|
||||
- EXTEND(SP, iters);
|
||||
- Copy(AvARRAY(ary), SP + 1, iters, SV*);
|
||||
- SP += iters;
|
||||
- RETURN;
|
||||
- }
|
||||
+ }
|
||||
+
|
||||
+ if (gimme != G_ARRAY) {
|
||||
+ /* SP points to the final SV* pushed to the stack. But the SV* */
|
||||
+ /* are not going to be used from the stack. Point SP to below */
|
||||
+ /* the first of these SV*. */
|
||||
+ SP -= iters;
|
||||
+ PUTBACK;
|
||||
+ }
|
||||
}
|
||||
else {
|
||||
- PUTBACK;
|
||||
- ENTER_with_name("call_PUSH");
|
||||
- call_sv(SV_CONST(PUSH),G_SCALAR|G_DISCARD|G_METHOD_NAMED);
|
||||
- LEAVE_with_name("call_PUSH");
|
||||
- SPAGAIN;
|
||||
+ PUTBACK;
|
||||
+ av_extend(ary,iters);
|
||||
+ av_clear(ary);
|
||||
+
|
||||
+ ENTER_with_name("call_PUSH");
|
||||
+ call_sv(SV_CONST(PUSH),G_SCALAR|G_DISCARD|G_METHOD_NAMED);
|
||||
+ LEAVE_with_name("call_PUSH");
|
||||
+ SPAGAIN;
|
||||
+
|
||||
if (gimme == G_ARRAY) {
|
||||
SSize_t i;
|
||||
/* EXTEND should not be needed - we just popped them */
|
||||
- EXTEND(SP, iters);
|
||||
+ EXTEND_SKIP(SP, iters);
|
||||
for (i=0; i < iters; i++) {
|
||||
SV **svp = av_fetch(ary, i, FALSE);
|
||||
PUSHs((svp) ? *svp : &PL_sv_undef);
|
||||
@@ -6389,13 +6401,12 @@ PP(pp_split)
|
||||
}
|
||||
}
|
||||
}
|
||||
- else {
|
||||
- if (gimme == G_ARRAY)
|
||||
- RETURN;
|
||||
- }
|
||||
|
||||
- GETTARGET;
|
||||
- XPUSHi(iters);
|
||||
+ if (gimme != G_ARRAY) {
|
||||
+ GETTARGET;
|
||||
+ XPUSHi(iters);
|
||||
+ }
|
||||
+
|
||||
RETURN;
|
||||
}
|
||||
|
||||
diff --git a/t/op/split.t b/t/op/split.t
|
||||
index 14f9158..7f37512 100644
|
||||
--- a/t/op/split.t
|
||||
+++ b/t/op/split.t
|
||||
@@ -7,7 +7,7 @@ BEGIN {
|
||||
set_up_inc('../lib');
|
||||
}
|
||||
|
||||
-plan tests => 176;
|
||||
+plan tests => 182;
|
||||
|
||||
$FS = ':';
|
||||
|
||||
@@ -648,6 +648,19 @@ is "@a", '1 2 3', 'assignment to split-to-array (stacked)';
|
||||
is (+@a, 0, "empty utf8 string");
|
||||
}
|
||||
|
||||
+# correct stack adjustments (gh#18232)
|
||||
+{
|
||||
+ sub foo { return @_ }
|
||||
+ my @a = foo(1, scalar split " ", "a b");
|
||||
+ is(join('', @a), "12", "Scalar split to a sub parameter");
|
||||
+}
|
||||
+
|
||||
+{
|
||||
+ sub foo { return @_ }
|
||||
+ my @a = foo(1, scalar(@x = split " ", "a b"));
|
||||
+ is(join('', @a), "12", "Split to @x then use scalar result as a sub parameter");
|
||||
+}
|
||||
+
|
||||
fresh_perl_is(<<'CODE', '', {}, "scalar split stack overflow");
|
||||
map{int"";split//.0>60for"0000000000000000"}split// for"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
||||
CODE
|
||||
@@ -667,3 +680,11 @@ CODE
|
||||
ok(eq_array(\@result,['a','b']), "Resulting in ('a','b')");
|
||||
}
|
||||
}
|
||||
+
|
||||
+# check that the (@ary = split) optimisation survives @ary being modified
|
||||
+
|
||||
+fresh_perl_is('my @ary; @ary = split(/\w(?{ @ary[1000] = 1 })/, "abc");',
|
||||
+ '',{},'(@ary = split ...) survives @ary being Renew()ed');
|
||||
+fresh_perl_is('my @ary; @ary = split(/\w(?{ undef @ary })/, "abc");',
|
||||
+ '',{},'(@ary = split ...) survives an (undef @ary)');
|
||||
+
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
From ab72b7bd043df0f0ad6090a4c95f378624fad9fc Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Sat, 7 Mar 2020 12:54:19 -0700
|
||||
Subject: [PATCH] DynaLoader: use PerlEnv_getenv()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Doing so invokes thread-safe guards
|
||||
|
||||
Petr Písař: Ported from b0312014d6c1804920d2b687a5fa5645b445ce9f to
|
||||
5.32.1.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
ext/DynaLoader/dlutils.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ext/DynaLoader/dlutils.c b/ext/DynaLoader/dlutils.c
|
||||
index 8584f89..1a27fbd 100644
|
||||
--- a/ext/DynaLoader/dlutils.c
|
||||
+++ b/ext/DynaLoader/dlutils.c
|
||||
@@ -115,7 +115,7 @@ dl_generic_private_init(pTHX) /* called by dl_*.xs dl_private_init() */
|
||||
#endif
|
||||
|
||||
#if defined(PERL_IN_DL_HPUX_XS) || defined(PERL_IN_DL_DLOPEN_XS)
|
||||
- if ( (perl_dl_nonlazy = getenv("PERL_DL_NONLAZY")) != NULL
|
||||
+ if ( (perl_dl_nonlazy = PerlEnv_getenv("PERL_DL_NONLAZY")) != NULL
|
||||
&& grok_atoUV(perl_dl_nonlazy, &uv, NULL)
|
||||
&& uv <= INT_MAX
|
||||
) {
|
||||
--
|
||||
2.26.2
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
From 2ce7bf1ad5fd7aee21975b3dd1c8dceef3aab7e4 Mon Sep 17 00:00:00 2001
|
||||
From: David Mitchell <davem@iabyn.com>
|
||||
Date: Tue, 9 Mar 2021 16:42:11 +0000
|
||||
Subject: [PATCH] Perl_do_sv_dump(): handle PL_strtab
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When dumping this special hash, the values in the HE entry are refcounts
|
||||
rather than SV pointers. sv_dump() used to crash here.
|
||||
|
||||
Petr Písař: Ported to 5.32.1 from upstream
|
||||
a9bb6a62ae45bb372a5cca98a76d1a79edd89ccb.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
dump.c | 11 +++++++++--
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dump.c b/dump.c
|
||||
index f03c3f6..0f15d77 100644
|
||||
--- a/dump.c
|
||||
+++ b/dump.c
|
||||
@@ -2224,8 +2224,15 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
|
||||
PerlIO_printf(file, "[UTF8 \"%s\"] ", sv_uni_display(d, keysv, 6 * SvCUR(keysv), UNI_DISPLAY_QQ));
|
||||
if (HvEITER_get(hv) == he)
|
||||
PerlIO_printf(file, "[CURRENT] ");
|
||||
- PerlIO_printf(file, "HASH = 0x%" UVxf "\n", (UV) hash);
|
||||
- do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim);
|
||||
+ PerlIO_printf(file, "HASH = 0x%" UVxf, (UV) hash);
|
||||
+
|
||||
+ if (sv == (SV*)PL_strtab)
|
||||
+ PerlIO_printf(file, " REFCNT = 0x%" UVxf "\n",
|
||||
+ (UV)he->he_valu.hent_refcount );
|
||||
+ else {
|
||||
+ (void)PerlIO_putc(file, '\n');
|
||||
+ do_sv_dump(level+1, file, elt, nest+1, maxnest, dumpops, pvlim);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
DONEHV:;
|
||||
--
|
||||
2.26.3
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
From c5eed6e541fe27d9e9dfd31f42c43f4dfa1f486b Mon Sep 17 00:00:00 2001
|
||||
From: Yves Orton <demerphq@gmail.com>
|
||||
Date: Sat, 11 Jul 2020 09:26:21 +0200
|
||||
Subject: [PATCH] hv.c: add a guard clause to prevent the number of buckets in
|
||||
a hash from getting too large
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This caps it at 1<<28 buckets, eg, ~268M. In theory without a guard clause like
|
||||
this we could grow to the point of possibly wrapping around in terms of size,
|
||||
not to mention being ridiculously wasteful of memory at larger sizes.
|
||||
Even this cap is probably too high. It should probably be something like 1<<24.
|
||||
|
||||
Petr Písař: Ported to 5.32.1 from
|
||||
aae087f7cec022be14a17deb95cb2208e16b7891.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
hv.c | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hv.c b/hv.c
|
||||
index eccae62..32dbd19 100644
|
||||
--- a/hv.c
|
||||
+++ b/hv.c
|
||||
@@ -38,7 +38,13 @@ holds the key and hash value.
|
||||
* NOTE if you change this formula so we split earlier than previously
|
||||
* you MUST change the logic in hv_ksplit()
|
||||
*/
|
||||
-#define DO_HSPLIT(xhv) ( ((xhv)->xhv_keys + ((xhv)->xhv_keys >> 1)) > (xhv)->xhv_max )
|
||||
+
|
||||
+/* MAX_BUCKET_MAX is the maximum max bucket index, at which point we stop growing the
|
||||
+ * number of buckets,
|
||||
+ */
|
||||
+#define MAX_BUCKET_MAX ((1<<26)-1)
|
||||
+#define DO_HSPLIT(xhv) ( ( ((xhv)->xhv_keys + ((xhv)->xhv_keys >> 1)) > (xhv)->xhv_max ) && \
|
||||
+ ((xhv)->xhv_max < MAX_BUCKET_MAX) )
|
||||
#define HV_FILL_THRESHOLD 31
|
||||
|
||||
static const char S_strtab_error[]
|
||||
@@ -1426,6 +1432,8 @@ S_hsplit(pTHX_ HV *hv, STRLEN const oldsize, STRLEN newsize)
|
||||
);
|
||||
|
||||
PERL_ARGS_ASSERT_HSPLIT;
|
||||
+ if (newsize > MAX_BUCKET_MAX+1)
|
||||
+ return;
|
||||
|
||||
PL_nomemok = TRUE;
|
||||
Renew(a, PERL_HV_ARRAY_ALLOC_BYTES(newsize)
|
||||
--
|
||||
2.26.2
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
From 6841cd5977c2d35ad75233734c66983a65613fce Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Wed, 12 Aug 2020 17:53:52 -0600
|
||||
Subject: [PATCH] Fix leak GH #18054
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This was a simple matter of one path failing to free the memory.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
regcomp.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/regcomp.c b/regcomp.c
|
||||
index addf375450..01f297c299 100644
|
||||
--- a/regcomp.c
|
||||
+++ b/regcomp.c
|
||||
@@ -15191,6 +15191,8 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
|
||||
FAIL2("panic: loc_correspondence[%d] is 0",
|
||||
(int) (s - s_start));
|
||||
}
|
||||
+ Safefree(locfold_buf);
|
||||
+ Safefree(loc_correspondence);
|
||||
}
|
||||
else {
|
||||
upper_fill = s - s0;
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,193 @@
|
|||
From b334474a337421c6643b872388245fb2c11bf995 Mon Sep 17 00:00:00 2001
|
||||
From: Tony Cook <tony@develop-help.com>
|
||||
Date: Mon, 30 Mar 2020 16:32:46 +1100
|
||||
Subject: [PATCH] fix C<i $obj> where $obj is a lexical
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
the DB::eval function depends on the special behaviour of eval ""
|
||||
within the DB package, which evaluates the string within the context
|
||||
of the first non-DB sub or eval scope, working up the call stack.
|
||||
|
||||
The debugger refactor moved handling for the 'i' command from the
|
||||
DB package to the DB::Obj package, so the eval in DB::eval was
|
||||
working in the context of the DB::Obj::cmd_i function, not in the
|
||||
calling scope.
|
||||
|
||||
Fixed by moving the handling for the i command back to DB.
|
||||
|
||||
Fixes #17661.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
MANIFEST | 1 +
|
||||
lib/perl5db.pl | 65 +++++++++++++++++++++---------------------
|
||||
lib/perl5db.t | 20 +++++++++++++
|
||||
lib/perl5db/t/gh-17661 | 14 +++++++++
|
||||
4 files changed, 68 insertions(+), 32 deletions(-)
|
||||
create mode 100644 lib/perl5db/t/gh-17661
|
||||
|
||||
diff --git a/MANIFEST b/MANIFEST
|
||||
index 8c71995174..96af3618bd 100644
|
||||
--- a/MANIFEST
|
||||
+++ b/MANIFEST
|
||||
@@ -4808,6 +4808,7 @@ lib/perl5db/t/eval-line-bug Tests for the Perl debugger
|
||||
lib/perl5db/t/fact Tests for the Perl debugger
|
||||
lib/perl5db/t/filename-line-breakpoint Tests for the Perl debugger
|
||||
lib/perl5db/t/gh-17660 Tests for the Perl debugger
|
||||
+lib/perl5db/t/gh-17661 Tests for the Perl debugger
|
||||
lib/perl5db/t/load-modules Tests for the Perl debugger
|
||||
lib/perl5db/t/lsub-n Test script used by perl5db.t
|
||||
lib/perl5db/t/lvalue-bug Tests for the Perl debugger
|
||||
diff --git a/lib/perl5db.pl b/lib/perl5db.pl
|
||||
index 96e56d559f..b647d24fb8 100644
|
||||
--- a/lib/perl5db.pl
|
||||
+++ b/lib/perl5db.pl
|
||||
@@ -2512,6 +2512,37 @@ EOP
|
||||
return;
|
||||
}
|
||||
|
||||
+=head3 C<_DB__handle_i_command> - inheritance display
|
||||
+
|
||||
+Display the (nested) parentage of the module or object given.
|
||||
+
|
||||
+=cut
|
||||
+
|
||||
+sub _DB__handle_i_command {
|
||||
+ my $self = shift;
|
||||
+
|
||||
+ my $line = $self->cmd_args;
|
||||
+ require mro;
|
||||
+ foreach my $isa ( split( /\s+/, $line ) ) {
|
||||
+ $evalarg = "$isa";
|
||||
+ # The &-call is here to ascertain the mutability of @_.
|
||||
+ ($isa) = &DB::eval;
|
||||
+ no strict 'refs';
|
||||
+ print join(
|
||||
+ ', ',
|
||||
+ map {
|
||||
+ "$_"
|
||||
+ . (
|
||||
+ defined( ${"$_\::VERSION"} )
|
||||
+ ? ' ' . ${"$_\::VERSION"}
|
||||
+ : undef )
|
||||
+ } @{mro::get_linear_isa(ref($isa) || $isa)}
|
||||
+ );
|
||||
+ print "\n";
|
||||
+ }
|
||||
+ next CMD;
|
||||
+}
|
||||
+
|
||||
# 't' is type.
|
||||
# 'm' is method.
|
||||
# 'v' is the value (i.e: method name or subroutine ref).
|
||||
@@ -2531,6 +2562,7 @@ BEGIN
|
||||
'W' => { t => 'm', v => '_handle_W_command', },
|
||||
'c' => { t => 's', v => \&_DB__handle_c_command, },
|
||||
'f' => { t => 's', v => \&_DB__handle_f_command, },
|
||||
+ 'i' => { t => 's', v => \&_DB__handle_i_command, },
|
||||
'm' => { t => 's', v => \&_DB__handle_m_command, },
|
||||
'n' => { t => 'm', v => '_handle_n_command', },
|
||||
'p' => { t => 'm', v => '_handle_p_command', },
|
||||
@@ -2551,7 +2583,7 @@ BEGIN
|
||||
{ t => 's', v => \&_DB__handle_restart_and_rerun_commands, },
|
||||
} qw(R rerun)),
|
||||
(map { $_ => {t => 'm', v => '_handle_cmd_wrapper_commands' }, }
|
||||
- qw(a A b B e E h i l L M o O v w W)),
|
||||
+ qw(a A b B e E h l L M o O v w W)),
|
||||
);
|
||||
};
|
||||
|
||||
@@ -5468,37 +5500,6 @@ sub cmd_h {
|
||||
}
|
||||
} ## end sub cmd_h
|
||||
|
||||
-=head3 C<cmd_i> - inheritance display
|
||||
-
|
||||
-Display the (nested) parentage of the module or object given.
|
||||
-
|
||||
-=cut
|
||||
-
|
||||
-sub cmd_i {
|
||||
- my $cmd = shift;
|
||||
- my $line = shift;
|
||||
-
|
||||
- require mro;
|
||||
-
|
||||
- foreach my $isa ( split( /\s+/, $line ) ) {
|
||||
- $evalarg = $isa;
|
||||
- # The &-call is here to ascertain the mutability of @_.
|
||||
- ($isa) = &DB::eval;
|
||||
- no strict 'refs';
|
||||
- print join(
|
||||
- ', ',
|
||||
- map {
|
||||
- "$_"
|
||||
- . (
|
||||
- defined( ${"$_\::VERSION"} )
|
||||
- ? ' ' . ${"$_\::VERSION"}
|
||||
- : undef )
|
||||
- } @{mro::get_linear_isa(ref($isa) || $isa)}
|
||||
- );
|
||||
- print "\n";
|
||||
- }
|
||||
-} ## end sub cmd_i
|
||||
-
|
||||
=head3 C<cmd_l> - list lines (command)
|
||||
|
||||
Most of the command is taken up with transforming all the different line
|
||||
diff --git a/lib/perl5db.t b/lib/perl5db.t
|
||||
index 913a301d98..ffa659a215 100644
|
||||
--- a/lib/perl5db.t
|
||||
+++ b/lib/perl5db.t
|
||||
@@ -2946,6 +2946,26 @@ SKIP:
|
||||
);
|
||||
}
|
||||
|
||||
+{
|
||||
+ # gh #17661
|
||||
+ my $wrapper = DebugWrap->new(
|
||||
+ {
|
||||
+ cmds =>
|
||||
+ [
|
||||
+ 'c',
|
||||
+ 'i $obj',
|
||||
+ 'q',
|
||||
+ ],
|
||||
+ prog => '../lib/perl5db/t/gh-17661',
|
||||
+ }
|
||||
+ );
|
||||
+
|
||||
+ $wrapper->output_like(
|
||||
+ qr/C5, C1, C2, C3, C4/,
|
||||
+ q/check for reasonable result/,
|
||||
+ );
|
||||
+}
|
||||
+
|
||||
SKIP:
|
||||
{
|
||||
$Config{usethreads}
|
||||
diff --git a/lib/perl5db/t/gh-17661 b/lib/perl5db/t/gh-17661
|
||||
new file mode 100644
|
||||
index 0000000000..0d85977b35
|
||||
--- /dev/null
|
||||
+++ b/lib/perl5db/t/gh-17661
|
||||
@@ -0,0 +1,14 @@
|
||||
+use v5.10.0;
|
||||
+
|
||||
+{ package C1; sub c1 { } our @ISA = qw(C2) }
|
||||
+{ package C2; sub c2 { } our @ISA = qw(C3) }
|
||||
+{ package C3; sub c3 { } our @ISA = qw( ) }
|
||||
+{ package C4; sub c4 { } our @ISA = qw( ) }
|
||||
+{ package C5; sub c5 { } our @ISA = qw(C1 C4) }
|
||||
+
|
||||
+my $obj = bless {}, 'C5';
|
||||
+$main::global = bless {}, 'C5';
|
||||
+
|
||||
+$DB::single = 1;
|
||||
+
|
||||
+say "Done.";
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
From 282d9dfeb4cea3c2d0335ba78faa3a9db931f1ec Mon Sep 17 00:00:00 2001
|
||||
From: David Mitchell <davem@iabyn.com>
|
||||
Date: Tue, 11 Aug 2020 13:58:51 +0100
|
||||
Subject: [PATCH] list assign in list context: honour LHS undef
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
GH #16685
|
||||
|
||||
In
|
||||
|
||||
@a = ($x, undef, undef) = (1))
|
||||
|
||||
@a should have 3 elements. v5.25.6-79-gb09ed995ad broke this and was
|
||||
returning one element.
|
||||
|
||||
The fix is simple: that previous commit made it so that elements were
|
||||
pushed back onto the stack only if they weren't immortal, so
|
||||
&PL_sv_undef was getting skipped. Make it so they always are.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
pp_hot.c | 2 +-
|
||||
t/op/aassign.t | 10 +++++++++-
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pp_hot.c b/pp_hot.c
|
||||
index e9f1ffe7a4..3564dd7e12 100644
|
||||
--- a/pp_hot.c
|
||||
+++ b/pp_hot.c
|
||||
@@ -2743,8 +2743,8 @@ PP(pp_aassign)
|
||||
if (!SvIMMORTAL(lsv)) {
|
||||
sv_set_undef(lsv);
|
||||
SvSETMAGIC(lsv);
|
||||
- *relem++ = lsv;
|
||||
}
|
||||
+ *relem++ = lsv;
|
||||
break;
|
||||
} /* switch */
|
||||
} /* while */
|
||||
diff --git a/t/op/aassign.t b/t/op/aassign.t
|
||||
index 9128f9fd98..aa1f2c722c 100644
|
||||
--- a/t/op/aassign.t
|
||||
+++ b/t/op/aassign.t
|
||||
@@ -595,7 +595,7 @@ SKIP: {
|
||||
}
|
||||
|
||||
{
|
||||
- # GH #17816
|
||||
+ # GH #16685
|
||||
# don't use the "1-arg on LHS can't be common" optimisation
|
||||
# when there are undef's there
|
||||
my $x = 1;
|
||||
@@ -603,5 +603,13 @@ SKIP: {
|
||||
is("@a", "2 1", "GH #17816");
|
||||
}
|
||||
|
||||
+{
|
||||
+ # GH #17816
|
||||
+ # honour trailing undef's in list context
|
||||
+ my $x = 1;
|
||||
+ my @a = (($x, undef, undef) = (1));
|
||||
+ is(scalar @a, 3, "GH #17816");
|
||||
+}
|
||||
+
|
||||
|
||||
done_testing();
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
From 5b354d2a8a6fea46c62048464c6722560cb1c907 Mon Sep 17 00:00:00 2001
|
||||
From: David Mitchell <davem@iabyn.com>
|
||||
Date: Tue, 11 Aug 2020 11:55:46 +0100
|
||||
Subject: [PATCH] list assign in list context was over-optimising
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
GH #17816
|
||||
|
||||
This code:
|
||||
|
||||
my $x = 1;
|
||||
print (($x, undef) = (2 => $x));
|
||||
|
||||
was printing "22" when it should have been printing "21".
|
||||
An optimisation skips the 'common values on both sides' test
|
||||
when the LHS of an assign only contains a single var; as the example
|
||||
above shows, this is not sufficient.
|
||||
|
||||
This was broken by v5.23.1-202-g808ce55782
|
||||
|
||||
This commit fixes it by counting undef's on the LHS towards the var
|
||||
count if they don't appear first.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
op.c | 10 +++++++---
|
||||
t/op/aassign.t | 10 ++++++++++
|
||||
2 files changed, 17 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/op.c b/op.c
|
||||
index 05f6d9d1a3..49aac853d4 100644
|
||||
--- a/op.c
|
||||
+++ b/op.c
|
||||
@@ -15679,11 +15679,15 @@ S_aassign_scan(pTHX_ OP* o, bool rhs, int *scalars_p)
|
||||
goto do_next;
|
||||
|
||||
case OP_UNDEF:
|
||||
- /* undef counts as a scalar on the RHS:
|
||||
- * (undef, $x) = ...; # only 1 scalar on LHS: always safe
|
||||
+ /* undef on LHS following a var is significant, e.g.
|
||||
+ * my $x = 1;
|
||||
+ * @a = (($x, undef) = (2 => $x));
|
||||
+ * # @a shoul be (2,1) not (2,2)
|
||||
+ *
|
||||
+ * undef on RHS counts as a scalar:
|
||||
* ($x, $y) = (undef, $x); # 2 scalars on RHS: unsafe
|
||||
*/
|
||||
- if (rhs)
|
||||
+ if ((!rhs && *scalars_p) || rhs)
|
||||
(*scalars_p)++;
|
||||
flags = AAS_SAFE_SCALAR;
|
||||
break;
|
||||
diff --git a/t/op/aassign.t b/t/op/aassign.t
|
||||
index ed904adc62..9128f9fd98 100644
|
||||
--- a/t/op/aassign.t
|
||||
+++ b/t/op/aassign.t
|
||||
@@ -594,4 +594,14 @@ SKIP: {
|
||||
is ($fill, 2, "RT #130132 array 2");
|
||||
}
|
||||
|
||||
+{
|
||||
+ # GH #17816
|
||||
+ # don't use the "1-arg on LHS can't be common" optimisation
|
||||
+ # when there are undef's there
|
||||
+ my $x = 1;
|
||||
+ my @a = (($x, undef) = (2 => $x));
|
||||
+ is("@a", "2 1", "GH #17816");
|
||||
+}
|
||||
+
|
||||
+
|
||||
done_testing();
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
From 90f66c42e4513ae5d907805fbf28b9967a90d6c5 Mon Sep 17 00:00:00 2001
|
||||
From: John Lightsey <john@04755.net>
|
||||
Date: Fri, 28 Aug 2020 23:39:18 -0500
|
||||
Subject: [PATCH] Heap buffer overflow in regex bracket group whitespace
|
||||
handling
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The code for skipping whitespace in regex bracket character groups
|
||||
was walking past the end of the regex in some cases.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
regcomp.c | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/regcomp.c b/regcomp.c
|
||||
index db82c77b00..64488994fa 100644
|
||||
--- a/regcomp.c
|
||||
+++ b/regcomp.c
|
||||
@@ -17228,10 +17228,10 @@ S_add_multi_match(pTHX_ AV* multi_char_matches, SV* multi_string, const STRLEN c
|
||||
*
|
||||
* There is a line below that uses the same white space criteria but is outside
|
||||
* this macro. Both here and there must use the same definition */
|
||||
-#define SKIP_BRACKETED_WHITE_SPACE(do_skip, p) \
|
||||
+#define SKIP_BRACKETED_WHITE_SPACE(do_skip, p, stop_p) \
|
||||
STMT_START { \
|
||||
if (do_skip) { \
|
||||
- while (isBLANK_A(UCHARAT(p))) \
|
||||
+ while (p < stop_p && isBLANK_A(UCHARAT(p))) \
|
||||
{ \
|
||||
p++; \
|
||||
} \
|
||||
@@ -17406,7 +17406,7 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
|
||||
initial_listsv_len = SvCUR(listsv);
|
||||
SvTEMP_off(listsv); /* Grr, TEMPs and mortals are conflated. */
|
||||
|
||||
- SKIP_BRACKETED_WHITE_SPACE(skip_white, RExC_parse);
|
||||
+ SKIP_BRACKETED_WHITE_SPACE(skip_white, RExC_parse, RExC_end);
|
||||
|
||||
assert(RExC_parse <= RExC_end);
|
||||
|
||||
@@ -17415,7 +17415,7 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
|
||||
invert = TRUE;
|
||||
allow_mutiple_chars = FALSE;
|
||||
MARK_NAUGHTY(1);
|
||||
- SKIP_BRACKETED_WHITE_SPACE(skip_white, RExC_parse);
|
||||
+ SKIP_BRACKETED_WHITE_SPACE(skip_white, RExC_parse, RExC_end);
|
||||
}
|
||||
|
||||
/* Check that they didn't say [:posix:] instead of [[:posix:]] */
|
||||
@@ -17462,12 +17462,12 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
|
||||
output_posix_warnings(pRExC_state, posix_warnings);
|
||||
}
|
||||
|
||||
+ SKIP_BRACKETED_WHITE_SPACE(skip_white, RExC_parse, RExC_end);
|
||||
+
|
||||
if (RExC_parse >= stop_ptr) {
|
||||
break;
|
||||
}
|
||||
|
||||
- SKIP_BRACKETED_WHITE_SPACE(skip_white, RExC_parse);
|
||||
-
|
||||
if (UCHARAT(RExC_parse) == ']') {
|
||||
break;
|
||||
}
|
||||
@@ -18156,7 +18156,7 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
|
||||
}
|
||||
} /* end of namedclass \blah */
|
||||
|
||||
- SKIP_BRACKETED_WHITE_SPACE(skip_white, RExC_parse);
|
||||
+ SKIP_BRACKETED_WHITE_SPACE(skip_white, RExC_parse, RExC_end);
|
||||
|
||||
/* If 'range' is set, 'value' is the ending of a range--check its
|
||||
* validity. (If value isn't a single code point in the case of a
|
||||
@@ -18199,7 +18199,7 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
|
||||
char* next_char_ptr = RExC_parse + 1;
|
||||
|
||||
/* Get the next real char after the '-' */
|
||||
- SKIP_BRACKETED_WHITE_SPACE(skip_white, next_char_ptr);
|
||||
+ SKIP_BRACKETED_WHITE_SPACE(skip_white, next_char_ptr, RExC_end);
|
||||
|
||||
/* If the '-' is at the end of the class (just before the ']',
|
||||
* it is a literal minus; otherwise it is a range */
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
From 042abef72d40ab7ff39127e2afae6e34dfc66404 Mon Sep 17 00:00:00 2001
|
||||
From: Nicolas R <atoomic@cpan.org>
|
||||
Date: Fri, 14 Aug 2020 16:16:22 -0500
|
||||
Subject: [PATCH] die_unwind(): global destruction
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Fix #18063
|
||||
|
||||
During global destruction make sure we preserve
|
||||
the string by using mortalcopy.
|
||||
|
||||
This is an update on 8c86f0238ecb5f32c2e7fba36e3edfdb54069068
|
||||
change which avoided sv_mortalcopy in favor of sv_2mortal.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
pp_ctl.c | 6 +++++-
|
||||
t/op/die_unwind.t | 4 ++++
|
||||
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pp_ctl.c b/pp_ctl.c
|
||||
index b8cd869ee0..cc244d7ba7 100644
|
||||
--- a/pp_ctl.c
|
||||
+++ b/pp_ctl.c
|
||||
@@ -1716,7 +1716,11 @@ Perl_die_unwind(pTHX_ SV *msv)
|
||||
* when unlocalising a tied var). So we do a dance with
|
||||
* mortalising and SAVEFREEing.
|
||||
*/
|
||||
- sv_2mortal(SvREFCNT_inc_simple_NN(exceptsv));
|
||||
+ if (PL_phase == PERL_PHASE_DESTRUCT) {
|
||||
+ exceptsv = sv_mortalcopy(exceptsv);
|
||||
+ } else {
|
||||
+ exceptsv = sv_2mortal(SvREFCNT_inc_simple_NN(exceptsv));
|
||||
+ }
|
||||
|
||||
/*
|
||||
* Historically, perl used to set ERRSV ($@) early in the die
|
||||
diff --git a/t/op/die_unwind.t b/t/op/die_unwind.t
|
||||
index eee1ce534b..4b83ee6fac 100644
|
||||
--- a/t/op/die_unwind.t
|
||||
+++ b/t/op/die_unwind.t
|
||||
@@ -69,4 +69,8 @@ is($uerr, "t3\n");
|
||||
is($val, undef, "undefined return value from 'eval' block with 'die'");
|
||||
is($err, "t3\n");
|
||||
|
||||
+fresh_perl_like(<<'EOS', qr/Custom Message During Global Destruction/, { switches => ['-w'], stderr => 1 } );
|
||||
+package Foo; sub DESTROY { die "Custom Message During Global Destruction" }; package main; our $wut = bless [], "Foo"
|
||||
+EOS
|
||||
+
|
||||
done_testing();
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
From 390fe0c0d09aadc66f644e9eee4aa1245221188c Mon Sep 17 00:00:00 2001
|
||||
From: David Mitchell <davem@iabyn.com>
|
||||
Date: Tue, 25 Aug 2020 13:15:25 +0100
|
||||
Subject: [PATCH] sort { return foo() } ...
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
GH #18081
|
||||
|
||||
A sub call via return in a sort block was called in void rather than
|
||||
scalar context, causing the comparison result to be discarded.
|
||||
|
||||
This because when a sort block is called it is not a real function
|
||||
call, even though a sort block can be returned from. Instead, a
|
||||
CXt_NULL is pushed on the context stack. Because this isn't a sub-ish
|
||||
context type (unlike CXt_SUB, CXt_EVAL etc) there is no 'caller sub'
|
||||
on the context stack to be found to retrieve the caller's context
|
||||
(i.e. cx->cx_gimme).
|
||||
|
||||
This commit fixes it by special-casing Perl_gimme_V().
|
||||
|
||||
Ideally at some future point, a new context type, CXt_SORT, should be
|
||||
added. This would be used instead of CXt_NULL when a sort BLOCK is
|
||||
called. Like other sub-ish context types, it would have an old_cxsubix
|
||||
field and PL_curstackinfo->si_cxsubix would point to it. This would
|
||||
eliminate needing special-case handling in places like Perl_gimme_V().
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
inline.h | 2 +-
|
||||
t/op/sort.t | 12 +++++++++++-
|
||||
2 files changed, 12 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/inline.h b/inline.h
|
||||
index a8240efb9c..6fbd5abfea 100644
|
||||
--- a/inline.h
|
||||
+++ b/inline.h
|
||||
@@ -2086,7 +2086,7 @@ Perl_gimme_V(pTHX)
|
||||
return gimme;
|
||||
cxix = PL_curstackinfo->si_cxsubix;
|
||||
if (cxix < 0)
|
||||
- return G_VOID;
|
||||
+ return PL_curstackinfo->si_type == PERLSI_SORT ? G_SCALAR: G_VOID;
|
||||
assert(cxstack[cxix].blk_gimme & G_WANT);
|
||||
return (cxstack[cxix].blk_gimme & G_WANT);
|
||||
}
|
||||
diff --git a/t/op/sort.t b/t/op/sort.t
|
||||
index f2e139dff0..8e387fb90d 100644
|
||||
--- a/t/op/sort.t
|
||||
+++ b/t/op/sort.t
|
||||
@@ -7,7 +7,7 @@ BEGIN {
|
||||
set_up_inc('../lib');
|
||||
}
|
||||
use warnings;
|
||||
-plan(tests => 203);
|
||||
+plan(tests => 204);
|
||||
use Tie::Array; # we need to test sorting tied arrays
|
||||
|
||||
# these shouldn't hang
|
||||
@@ -1202,3 +1202,13 @@ SKIP:
|
||||
$fillb = undef;
|
||||
is $act, "01[sortb]2[fillb]";
|
||||
}
|
||||
+
|
||||
+# GH #18081
|
||||
+# sub call via return in sort block was called in void rather than scalar
|
||||
+# context
|
||||
+
|
||||
+{
|
||||
+ sub sort18081 { $a + 1 <=> $b + 1 }
|
||||
+ my @a = sort { return &sort18081 } 6,1,2;
|
||||
+ is "@a", "1 2 6", "GH #18081";
|
||||
+}
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
From bd5fa06648085e8c17efd55abeb6424aeeb1018e Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Tue, 29 Sep 2020 00:48:19 -0600
|
||||
Subject: [PATCH] Remove Perl_av_top_index
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
I created this in 87306e0674dfe3af29804b4641347cd5ac9b0521, thinking it
|
||||
was needed to preserve backward compatibility if someone were using this
|
||||
instead of the macro. But it turned out that there never was such a
|
||||
function, it was inlined, and the name was S_av_top_index, so there is
|
||||
no reason to create a new function that no one has ever been able to
|
||||
call. So just remove it, and let all accesses go through the macro
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
av.c | 10 ----------
|
||||
embed.fnc | 2 +-
|
||||
proto.h | 7 +++----
|
||||
3 files changed, 4 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/av.c b/av.c
|
||||
index ada09cde9a..ad2429f90d 100644
|
||||
--- a/av.c
|
||||
+++ b/av.c
|
||||
@@ -1095,16 +1095,6 @@ Perl_av_nonelem(pTHX_ AV *av, SSize_t ix) {
|
||||
return sv;
|
||||
}
|
||||
|
||||
-SSize_t
|
||||
-Perl_av_top_index(pTHX_ AV *av)
|
||||
-{
|
||||
- PERL_ARGS_ASSERT_AV_TOP_INDEX;
|
||||
- assert(SvTYPE(av) == SVt_PVAV);
|
||||
-
|
||||
- return AvFILL(av);
|
||||
-}
|
||||
-
|
||||
-
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
diff --git a/embed.fnc b/embed.fnc
|
||||
index a6b4d0350f..f5c5b29c2d 100644
|
||||
--- a/embed.fnc
|
||||
+++ b/embed.fnc
|
||||
@@ -637,7 +637,7 @@ Apd |void |av_push |NN AV *av|NN SV *val
|
||||
EXp |void |av_reify |NN AV *av
|
||||
ApdR |SV* |av_shift |NN AV *av
|
||||
Apd |SV** |av_store |NN AV *av|SSize_t key|NULLOK SV *val
|
||||
-AMdRp |SSize_t|av_top_index |NN AV *av
|
||||
+AmdR |SSize_t|av_top_index |NN AV *av
|
||||
AidRp |Size_t |av_count |NN AV *av
|
||||
AmdR |SSize_t|av_tindex |NN AV *av
|
||||
Apd |void |av_undef |NN AV *av
|
||||
diff --git a/proto.h b/proto.h
|
||||
index c4490fc46e..2da1a07761 100644
|
||||
--- a/proto.h
|
||||
+++ b/proto.h
|
||||
@@ -291,10 +291,9 @@ PERL_CALLCONV SV** Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val);
|
||||
__attribute__warn_unused_result__; */
|
||||
#define PERL_ARGS_ASSERT_AV_TINDEX
|
||||
|
||||
-PERL_CALLCONV SSize_t Perl_av_top_index(pTHX_ AV *av)
|
||||
- __attribute__warn_unused_result__;
|
||||
-#define PERL_ARGS_ASSERT_AV_TOP_INDEX \
|
||||
- assert(av)
|
||||
+/* PERL_CALLCONV SSize_t av_top_index(pTHX_ AV *av)
|
||||
+ __attribute__warn_unused_result__; */
|
||||
+#define PERL_ARGS_ASSERT_AV_TOP_INDEX
|
||||
|
||||
PERL_CALLCONV void Perl_av_undef(pTHX_ AV *av);
|
||||
#define PERL_ARGS_ASSERT_AV_UNDEF \
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
From f4cd5e29bc15621f2ab8fc5d7de0e68e62d43999 Mon Sep 17 00:00:00 2001
|
||||
From: Hugo van der Sanden <hv@crypt.org>
|
||||
Date: Tue, 15 Sep 2020 14:02:54 +0100
|
||||
Subject: [PATCH] [gh18096] assume worst-case for GOSUBs we don't analyse
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
During study_chunk, under various conditions we avoid recursing into
|
||||
a GOSUB. But we must avoid giving the enclosing scope the idea that
|
||||
this GOSUB would match only an empty string, since that could trigger
|
||||
wrong optimizations (eg CURLYX => CURLYM in the ticket).
|
||||
|
||||
So we mark the construct as infinite, as in the code branch where we
|
||||
_do_ recurse into it.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
regcomp.c | 7 ++++++-
|
||||
t/re/re_tests | 2 ++
|
||||
2 files changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/regcomp.c b/regcomp.c
|
||||
index 124ea5b90b..fae3f8079d 100644
|
||||
--- a/regcomp.c
|
||||
+++ b/regcomp.c
|
||||
@@ -5212,7 +5212,12 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp,
|
||||
* might result in a minlen of 1 and not of 4,
|
||||
* but this doesn't make us mismatch, just try a bit
|
||||
* harder than we should.
|
||||
- * */
|
||||
+ *
|
||||
+ * However we must assume this GOSUB is infinite, to
|
||||
+ * avoid wrongly applying other optimizations in the
|
||||
+ * enclosing scope - see GH 18096, for example.
|
||||
+ */
|
||||
+ is_inf = is_inf_internal = 1;
|
||||
scan= regnext(scan);
|
||||
continue;
|
||||
}
|
||||
diff --git a/t/re/re_tests b/t/re/re_tests
|
||||
index 554a7004a2..ab5a0d8012 100644
|
||||
--- a/t/re/re_tests
|
||||
+++ b/t/re/re_tests
|
||||
@@ -2023,6 +2023,8 @@ AB\s+\x{100} AB \x{100}X y - -
|
||||
/(?iaax:A? \K +)/ African_Feh c - \\K + is forbidden - matches null string many times in regex
|
||||
/(?iaa:A?\K+)/ African_Feh c - \\K+ is forbidden - matches null string many times in regex
|
||||
/(?iaa:A?\K*)/ African_Feh c - \\K* is forbidden - matches null string many times in regex
|
||||
+^((\w|<(\s)*(?1)(?3)*>)(?:(?3)*\+(?3)*(?2))*)(?3)*\+ a + b + <c + d> y $1 a + b # [GH #18096]
|
||||
+^((\w|<(\s)*(?1)(?3)*>)(?:(?3)*\+(?3)*(?2))*)(?3)*\+ a + <b> + c y $1 a + <b> # [GH #18096]
|
||||
# Keep these lines at the end of the file
|
||||
# pat string y/n/etc expr expected-expr skip-reason comment
|
||||
# vim: softtabstop=0 noexpandtab
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
From fa353c3d2833fc326233e0eb583753b4d7887a63 Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Sun, 4 Oct 2020 11:07:19 -0600
|
||||
Subject: [PATCH] mro.xs: Fix compiler warning
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Fixes GH #18155
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
ext/mro/mro.xs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ext/mro/mro.xs b/ext/mro/mro.xs
|
||||
index f21216af6e..8ce5844904 100644
|
||||
--- a/ext/mro/mro.xs
|
||||
+++ b/ext/mro/mro.xs
|
||||
@@ -253,7 +253,7 @@ S_mro_get_linear_isa_c3(pTHX_ HV* stash, U32 level)
|
||||
hierarchy is not C3-incompatible */
|
||||
if(!winner) {
|
||||
SV *errmsg;
|
||||
- I32 i;
|
||||
+ Size_t i;
|
||||
|
||||
errmsg = newSVpvf(
|
||||
"Inconsistent hierarchy during C3 merge of class '%" HEKf "':\n\t"
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From 5777cf812c2812ea45eeb45e48979bab544d71af Mon Sep 17 00:00:00 2001
|
||||
From: TAKAI Kousuke <62541129+t-a-k@users.noreply.github.com>
|
||||
Date: Thu, 8 Oct 2020 19:02:10 +0900
|
||||
Subject: [PATCH] sv.c: Added missing braces in Perl_sv_inc_nomg().
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
sv.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sv.c b/sv.c
|
||||
index 82248e3b1f..57fd65a5b8 100644
|
||||
--- a/sv.c
|
||||
+++ b/sv.c
|
||||
@@ -8944,9 +8944,10 @@ Perl_sv_inc_nomg(pTHX_ SV *const sv)
|
||||
if (SvIsUV(sv)) {
|
||||
if (SvUVX(sv) == UV_MAX)
|
||||
sv_setnv(sv, UV_MAX_P1);
|
||||
- else
|
||||
+ else {
|
||||
(void)SvIOK_only_UV(sv);
|
||||
SvUV_set(sv, SvUVX(sv) + 1);
|
||||
+ }
|
||||
} else {
|
||||
if (SvIVX(sv) == IV_MAX)
|
||||
sv_setuv(sv, (UV)IV_MAX + 1);
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
From e17dadf36f7b4348e59076240c880d0c78b33fa9 Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Tue, 22 Sep 2020 08:47:52 -0600
|
||||
Subject: [PATCH] sv.h: sv_collxfrm didn't work properly
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
It is supposed to be a wrapper for sv_collxfrm_flags, but it was just
|
||||
calling sv_cmp_flags instead. The consequences are none except under
|
||||
'use locale' in which case you always got the C locale. I did not add
|
||||
tests, because it is really a pain to write portable locale tests, and
|
||||
this doesn't seem to be much used. In core the '_flags' form was always
|
||||
used.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
sv.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sv.h b/sv.h
|
||||
index 19ce718ac3..44414b35a9 100644
|
||||
--- a/sv.h
|
||||
+++ b/sv.h
|
||||
@@ -2045,7 +2045,7 @@ Like C<sv_catsv> but doesn't process magic.
|
||||
#define sv_eq(sv1, sv2) sv_eq_flags(sv1, sv2, SV_GMAGIC)
|
||||
#define sv_cmp(sv1, sv2) sv_cmp_flags(sv1, sv2, SV_GMAGIC)
|
||||
#define sv_cmp_locale(sv1, sv2) sv_cmp_locale_flags(sv1, sv2, SV_GMAGIC)
|
||||
-#define sv_collxfrm(sv, nxp) sv_cmp_flags(sv, nxp, SV_GMAGIC)
|
||||
+#define sv_collxfrm(sv, nxp) sv_collxfrm_flags(sv, nxp, SV_GMAGIC)
|
||||
#define sv_2bool(sv) sv_2bool_flags(sv, SV_GMAGIC)
|
||||
#define sv_2bool_nomg(sv) sv_2bool_flags(sv, 0)
|
||||
#define sv_insert(bigstr, offset, len, little, littlelen) \
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
From e050064b67c501e9fdc7bc3f513ba2b8b9e795f8 Mon Sep 17 00:00:00 2001
|
||||
From: David Mitchell <davem@iabyn.com>
|
||||
Date: Fri, 30 Oct 2020 20:50:58 +0000
|
||||
Subject: [PATCH] Perl_custom_op_get_field(): remove undef behaviour
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Thus function has a couple a switches with
|
||||
|
||||
default:
|
||||
NOT_REACHED; /* NOTREACHED */
|
||||
|
||||
but clang is complaining that the value returned by the function is
|
||||
undefined if those default branches are taken, since the 'any' variable
|
||||
doesn't get set in that path.
|
||||
|
||||
Replace the NOTREACHED with a croak("panic: ..."). It's possible (albeit
|
||||
not intended) for Perl_custom_op_get_field() to be called with a 'field'
|
||||
arg which triggers the default case. So if this ever happens, make it
|
||||
clear that something has gone wrong, rather than just silently
|
||||
continuing on non-debugging builds.
|
||||
|
||||
In any case, this shuts up clang.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
op.c | 14 ++++++--------
|
||||
1 file changed, 6 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/op.c b/op.c
|
||||
index c30c6b7c8f..2933e2ed7d 100644
|
||||
--- a/op.c
|
||||
+++ b/op.c
|
||||
@@ -18100,6 +18100,7 @@ Perl_custom_op_get_field(pTHX_ const OP *o, const xop_flags_enum field)
|
||||
else
|
||||
xop = INT2PTR(XOP *, SvIV(HeVAL(he)));
|
||||
}
|
||||
+
|
||||
{
|
||||
XOPRETANY any;
|
||||
if(field == XOPe_xop_ptr) {
|
||||
@@ -18121,7 +18122,10 @@ Perl_custom_op_get_field(pTHX_ const OP *o, const xop_flags_enum field)
|
||||
any.xop_peep = xop->xop_peep;
|
||||
break;
|
||||
default:
|
||||
- NOT_REACHED; /* NOTREACHED */
|
||||
+ field_panic:
|
||||
+ Perl_croak(aTHX_
|
||||
+ "panic: custom_op_get_field(): invalid field %d\n",
|
||||
+ (int)field);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@@ -18139,17 +18143,11 @@ Perl_custom_op_get_field(pTHX_ const OP *o, const xop_flags_enum field)
|
||||
any.xop_peep = XOPd_xop_peep;
|
||||
break;
|
||||
default:
|
||||
- NOT_REACHED; /* NOTREACHED */
|
||||
+ goto field_panic;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
- /* On some platforms (HP-UX, IA64) gcc emits a warning for this function:
|
||||
- * op.c: In function 'Perl_custom_op_get_field':
|
||||
- * op.c:...: warning: 'any.xop_name' may be used uninitialized in this function [-Wmaybe-uninitialized]
|
||||
- * This is because on those platforms (with -DEBUGGING) NOT_REACHED
|
||||
- * expands to assert(0), which expands to ((0) ? (void)0 :
|
||||
- * __assert(...)), and gcc doesn't know that __assert can never return. */
|
||||
return any;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
From f877e124a20d4f94c82c36e6b7a99b4e9663e204 Mon Sep 17 00:00:00 2001
|
||||
From: Tony Cook <tony@develop-help.com>
|
||||
Date: Tue, 10 Nov 2020 15:50:27 +1100
|
||||
Subject: [PATCH] fetch magic on the first stacked filetest, not the last
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
fixes #18293
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
pp_sys.c | 2 +-
|
||||
t/op/filetest.t | 10 +++++++++-
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pp_sys.c b/pp_sys.c
|
||||
index 66c5d9aade..5c9f768eaf 100644
|
||||
--- a/pp_sys.c
|
||||
+++ b/pp_sys.c
|
||||
@@ -3067,7 +3067,7 @@ S_try_amagic_ftest(pTHX_ char chr) {
|
||||
SV *const arg = *PL_stack_sp;
|
||||
|
||||
assert(chr != '?');
|
||||
- if (!(PL_op->op_private & OPpFT_STACKING)) SvGETMAGIC(arg);
|
||||
+ if (!(PL_op->op_private & OPpFT_STACKED)) SvGETMAGIC(arg);
|
||||
|
||||
if (SvAMAGIC(arg))
|
||||
{
|
||||
diff --git a/t/op/filetest.t b/t/op/filetest.t
|
||||
index fe9724c59a..7c471c050c 100644
|
||||
--- a/t/op/filetest.t
|
||||
+++ b/t/op/filetest.t
|
||||
@@ -9,7 +9,7 @@ BEGIN {
|
||||
set_up_inc(qw '../lib ../cpan/Perl-OSType/lib');
|
||||
}
|
||||
|
||||
-plan(tests => 57 + 27*14);
|
||||
+plan(tests => 58 + 27*14);
|
||||
|
||||
if ($^O =~ /MSWin32|cygwin|msys/ && !is_miniperl) {
|
||||
require Win32; # for IsAdminUser()
|
||||
@@ -385,3 +385,11 @@ SKIP: {
|
||||
ok(!-f "TEST\0-", '-f on name with \0');
|
||||
ok(!-r "TEST\0-", '-r on name with \0');
|
||||
}
|
||||
+
|
||||
+{
|
||||
+ # github #18293
|
||||
+ "" =~ /(.*)/;
|
||||
+ my $x = $1; # call magic on $1, setting the pv to ""
|
||||
+ "test.pl" =~ /(.*)/;
|
||||
+ ok(-f -r $1, "stacked handles on a name with magic");
|
||||
+}
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
From ab307de390c3459badcc89b3d77542b5b871b2e8 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Leach <richardleach@users.noreply.github.com>
|
||||
Date: Tue, 20 Oct 2020 18:16:38 +0100
|
||||
Subject: [PATCH 2/2] pp_split: add TonyC's stack-not-refcounted-suggestion and
|
||||
tests
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
pp.c | 5 ++++-
|
||||
t/op/split.t | 5 +++++
|
||||
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pp.c b/pp.c
|
||||
index ce16c56e63..5b5e163011 100644
|
||||
--- a/pp.c
|
||||
+++ b/pp.c
|
||||
@@ -6034,6 +6034,9 @@ PP(pp_split)
|
||||
oldsave = PL_savestack_ix;
|
||||
}
|
||||
|
||||
+ /* Some defence against stack-not-refcounted bugs */
|
||||
+ (void)sv_2mortal(SvREFCNT_inc_simple_NN(ary));
|
||||
+
|
||||
if ((mg = SvTIED_mg((const SV *)ary, PERL_MAGIC_tied))) {
|
||||
PUSHMARK(SP);
|
||||
XPUSHs(SvTIED_obj(MUTABLE_SV(ary), mg));
|
||||
@@ -6356,7 +6359,7 @@ PP(pp_split)
|
||||
}
|
||||
|
||||
PUTBACK;
|
||||
- LEAVE_SCOPE(oldsave); /* may undo an earlier SWITCHSTACK */
|
||||
+ LEAVE_SCOPE(oldsave);
|
||||
SPAGAIN;
|
||||
if (realarray) {
|
||||
if (!mg) {
|
||||
diff --git a/t/op/split.t b/t/op/split.t
|
||||
index 1d78a45bde..7a321645ac 100644
|
||||
--- a/t/op/split.t
|
||||
+++ b/t/op/split.t
|
||||
@@ -703,3 +703,8 @@ fresh_perl_is('my @ary; @ary = split(/\w(?{ @ary[1000] = 1 })/, "abc");',
|
||||
fresh_perl_is('my @ary; @ary = split(/\w(?{ undef @ary })/, "abc");',
|
||||
'',{},'(@ary = split ...) survives an (undef @ary)');
|
||||
|
||||
+# check the (@ary = split) optimisation survives stack-not-refcounted bugs
|
||||
+fresh_perl_is('our @ary; @ary = split(/\w(?{ *ary = 0 })/, "abc");',
|
||||
+ '',{},'(@ary = split ...) survives @ary destruction via typeglob');
|
||||
+fresh_perl_is('my $ary = []; @$ary = split(/\w(?{ $ary = [] })/, "abc");',
|
||||
+ '',{},'(@ary = split ...) survives @ary destruction via reassignment');
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
From b52b6c4029b51818442d64c6104d26e12e140f09 Mon Sep 17 00:00:00 2001
|
||||
From: TAKAI Kousuke <62541129+t-a-k@users.noreply.github.com>
|
||||
Date: Thu, 5 Nov 2020 22:06:16 +0900
|
||||
Subject: [PATCH] t/op/inc.t, t/op/hexfp.t, t/op/sprintf2.t: Add missing d_
|
||||
prefixes for Config variable names.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
t/op/hexfp.t | 2 +-
|
||||
t/op/inc.t | 4 ++--
|
||||
t/op/sprintf2.t | 4 ++--
|
||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/t/op/hexfp.t b/t/op/hexfp.t
|
||||
index b0c85cfdc6..5fb80d3d74 100644
|
||||
--- a/t/op/hexfp.t
|
||||
+++ b/t/op/hexfp.t
|
||||
@@ -246,7 +246,7 @@ SKIP: {
|
||||
skip("non-80-bit-long-double", 4)
|
||||
unless ($Config{uselongdouble} &&
|
||||
($Config{nvsize} == 16 || $Config{nvsize} == 12) &&
|
||||
- ($Config{long_double_style_ieee_extended}));
|
||||
+ ($Config{d_long_double_style_ieee_extended}));
|
||||
is(0x1p-1074, 4.94065645841246544e-324);
|
||||
is(0x1p-1075, 2.47032822920623272e-324, '[perl #128919]');
|
||||
is(0x1p-1076, 1.23516411460311636e-324);
|
||||
diff --git a/t/op/inc.t b/t/op/inc.t
|
||||
index 0bb8b85b13..3d5cc024d3 100644
|
||||
--- a/t/op/inc.t
|
||||
+++ b/t/op/inc.t
|
||||
@@ -188,10 +188,10 @@ cmp_ok($a, '==', 2147483647, "postdecrement properly downgrades from double");
|
||||
|
||||
SKIP: {
|
||||
if ($Config{uselongdouble} &&
|
||||
- ($Config{long_double_style_ieee_doubledouble})) {
|
||||
+ ($Config{d_long_double_style_ieee_doubledouble})) {
|
||||
skip "the double-double format is weird", 1;
|
||||
}
|
||||
- unless ($Config{double_style_ieee}) {
|
||||
+ unless ($Config{d_double_style_ieee}) {
|
||||
skip "the doublekind $Config{doublekind} is not IEEE", 1;
|
||||
}
|
||||
|
||||
diff --git a/t/op/sprintf2.t b/t/op/sprintf2.t
|
||||
index bbc12ccd0a..38a550c281 100644
|
||||
--- a/t/op/sprintf2.t
|
||||
+++ b/t/op/sprintf2.t
|
||||
@@ -701,7 +701,7 @@ SKIP: {
|
||||
skip("uselongdouble=" . ($Config{uselongdouble} ? 'define' : 'undef')
|
||||
. " longdblkind=$Config{longdblkind} os=$^O", 6)
|
||||
unless ($Config{uselongdouble} &&
|
||||
- ($Config{long_double_style_ieee_doubledouble})
|
||||
+ ($Config{d_long_double_style_ieee_doubledouble})
|
||||
# Gating on 'linux' (ppc) here is due to the differing
|
||||
# double-double implementations: other (also big-endian)
|
||||
# double-double platforms (e.g. AIX on ppc or IRIX on mips)
|
||||
@@ -892,7 +892,7 @@ SKIP: {
|
||||
skip("non-80-bit-long-double", 17)
|
||||
unless ($Config{uselongdouble} &&
|
||||
($Config{nvsize} == 16 || $Config{nvsize} == 12) &&
|
||||
- ($Config{long_double_style_ieee_extended}));
|
||||
+ ($Config{d_long_double_style_ieee_extended}));
|
||||
|
||||
{
|
||||
# The last normal for this format.
|
||||
--
|
||||
2.25.4
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From 9289d4dc7a3d24b20c6e25045e687321ee3e8faf Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Mon, 30 Nov 2020 09:25:52 -0700
|
||||
Subject: [PATCH] locale.c: Fix typo in #ifdef
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This misspelling led to the code assuming that the platform didn't have
|
||||
a feature that, if used, would result in faster execution.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
locale.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/locale.c b/locale.c
|
||||
index 9500ab7960..5970423404 100644
|
||||
--- a/locale.c
|
||||
+++ b/locale.c
|
||||
@@ -2621,7 +2621,7 @@ S_my_nl_langinfo(const int item, bool toggle)
|
||||
#if defined(HAS_NL_LANGINFO) /* nl_langinfo() is available. */
|
||||
# if ! defined(HAS_THREAD_SAFE_NL_LANGINFO_L) \
|
||||
|| ! defined(HAS_POSIX_2008_LOCALE) \
|
||||
- || ! defined(DUPLOCALE)
|
||||
+ || ! defined(HAS_DUPLOCALE)
|
||||
|
||||
/* Here, use plain nl_langinfo(), switching to the underlying LC_NUMERIC
|
||||
* for those items dependent on it. This must be copied to a buffer before
|
||||
--
|
||||
2.26.2
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
From 4cfbe5474a5c5f852a6dbf0138dc796c2800be93 Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Wed, 30 Dec 2020 05:55:08 -0700
|
||||
Subject: [PATCH] Fix buggy fc() in Turkish locale
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When Turkish handling was added, fc() wasn't properly updated
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
pp.c | 12 +++++++++---
|
||||
t/op/lc.t | 23 ++++++++++++++++-------
|
||||
2 files changed, 25 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/pp.c b/pp.c
|
||||
index 5e1706346d..23cc6c8adb 100644
|
||||
--- a/pp.c
|
||||
+++ b/pp.c
|
||||
@@ -4813,7 +4813,7 @@ PP(pp_fc)
|
||||
do {
|
||||
extra++;
|
||||
|
||||
- s_peek = (U8 *) memchr(s_peek + 1, 'i',
|
||||
+ s_peek = (U8 *) memchr(s_peek + 1, 'I',
|
||||
send - (s_peek + 1));
|
||||
} while (s_peek != NULL);
|
||||
}
|
||||
@@ -4828,8 +4828,14 @@ PP(pp_fc)
|
||||
+ 1 /* Trailing NUL */ );
|
||||
d = (U8*)SvPVX(dest) + len;
|
||||
|
||||
- *d++ = UTF8_TWO_BYTE_HI(GREEK_SMALL_LETTER_MU);
|
||||
- *d++ = UTF8_TWO_BYTE_LO(GREEK_SMALL_LETTER_MU);
|
||||
+ if (*s == 'I') {
|
||||
+ *d++ = UTF8_TWO_BYTE_HI(LATIN_SMALL_LETTER_DOTLESS_I);
|
||||
+ *d++ = UTF8_TWO_BYTE_LO(LATIN_SMALL_LETTER_DOTLESS_I);
|
||||
+ }
|
||||
+ else {
|
||||
+ *d++ = UTF8_TWO_BYTE_HI(GREEK_SMALL_LETTER_MU);
|
||||
+ *d++ = UTF8_TWO_BYTE_LO(GREEK_SMALL_LETTER_MU);
|
||||
+ }
|
||||
s++;
|
||||
|
||||
for (; s < send; s++) {
|
||||
diff --git a/t/op/lc.t b/t/op/lc.t
|
||||
index fce77f3d34..812c41d6b6 100644
|
||||
--- a/t/op/lc.t
|
||||
+++ b/t/op/lc.t
|
||||
@@ -17,7 +17,7 @@ BEGIN {
|
||||
|
||||
use feature qw( fc );
|
||||
|
||||
-plan tests => 139 + 2 * (4 * 256) + 15;
|
||||
+plan tests => 139 + 2 * (5 * 256) + 17;
|
||||
|
||||
is(lc(undef), "", "lc(undef) is ''");
|
||||
is(lcfirst(undef), "", "lcfirst(undef) is ''");
|
||||
@@ -352,13 +352,14 @@ foreach my $turkic (0 .. 1) {
|
||||
my $locale = ($turkic) ? $turkic_locale : $non_turkic_locale;
|
||||
|
||||
SKIP: {
|
||||
- skip "Can't find a $type UTF-8 locale", 4*256 unless defined $locale;
|
||||
+ skip "Can't find a $type UTF-8 locale", 5*256 unless defined $locale;
|
||||
|
||||
use feature qw( unicode_strings );
|
||||
|
||||
no locale;
|
||||
|
||||
my @unicode_lc;
|
||||
+ my @unicode_fc;
|
||||
my @unicode_uc;
|
||||
my @unicode_lcfirst;
|
||||
my @unicode_ucfirst;
|
||||
@@ -366,6 +367,7 @@ foreach my $turkic (0 .. 1) {
|
||||
# Get all the values outside of 'locale'
|
||||
for my $i (0 .. 255) {
|
||||
push @unicode_lc, lc(chr $i);
|
||||
+ push @unicode_fc, fc(chr $i);
|
||||
push @unicode_uc, uc(chr $i);
|
||||
push @unicode_lcfirst, lcfirst(chr $i);
|
||||
push @unicode_ucfirst, ucfirst(chr $i);
|
||||
@@ -373,6 +375,7 @@ foreach my $turkic (0 .. 1) {
|
||||
|
||||
if ($turkic) {
|
||||
$unicode_lc[ord 'I'] = chr 0x131;
|
||||
+ $unicode_fc[ord 'I'] = chr 0x131;
|
||||
$unicode_lcfirst[ord 'I'] = chr 0x131;
|
||||
$unicode_uc[ord 'i'] = chr 0x130;
|
||||
$unicode_ucfirst[ord 'i'] = chr 0x130;
|
||||
@@ -384,6 +387,7 @@ foreach my $turkic (0 .. 1) {
|
||||
for my $i (0 .. 255) {
|
||||
is(lc(chr $i), $unicode_lc[$i], "In a $type UTF-8 locale, lc(chr $i) is the same as official Unicode");
|
||||
is(uc(chr $i), $unicode_uc[$i], "In a $type UTF-8 locale, uc(chr $i) is the same as official Unicode");
|
||||
+ is(fc(chr $i), $unicode_fc[$i], "In a $type UTF-8 locale, fc(chr $i) is the same as official Unicode");
|
||||
is(lcfirst(chr $i), $unicode_lcfirst[$i], "In a $type UTF-8 locale, lcfirst(chr $i) is the same as official Unicode");
|
||||
is(ucfirst(chr $i), $unicode_ucfirst[$i], "In a $type UTF-8 locale, ucfirst(chr $i) is the same as official Unicode");
|
||||
}
|
||||
@@ -391,27 +395,32 @@ foreach my $turkic (0 .. 1) {
|
||||
}
|
||||
|
||||
SKIP: {
|
||||
- skip "Can't find a turkic UTF-8 locale", 15 unless defined $turkic_locale;
|
||||
+ skip "Can't find a turkic UTF-8 locale", 17 unless defined $turkic_locale;
|
||||
|
||||
# These are designed to stress the calculation of space needed for the
|
||||
# strings. $filler contains a variety of characters that have special
|
||||
# handling in the casing functions, and some regular chars as well.
|
||||
+ # (0x49 = 'I')
|
||||
my $filler_length = 10000;
|
||||
- my $filler = uni_to_native("\x{df}\x{b5}\x{e0}\x{c1}\x{b6}\x{ff}") x $filler_length;
|
||||
+ my $filler = uni_to_native("\x{df}\x{49}\x{69}\x{b5}\x{e0}\x{c1}\x{b6}\x{ff}") x $filler_length;
|
||||
|
||||
# These are the correct answers to what should happen when the given
|
||||
# casing function is called on $filler;
|
||||
- my $filler_lc = uni_to_native("\x{df}\x{b5}\x{e0}\x{e1}\x{b6}\x{ff}") x $filler_length;
|
||||
- my $filler_fc = ("ss" . uni_to_native("\x{b5}\x{e0}\x{e1}\x{b6}\x{ff}")) x $filler_length;
|
||||
- my $filler_uc = ("SS" . uni_to_native("\x{39c}\x{c0}\x{c1}\x{b6}\x{178}")) x $filler_length;
|
||||
+ my $filler_lc = uni_to_native("\x{df}\x{131}\x{69}\x{b5}\x{e0}\x{e1}\x{b6}\x{ff}") x $filler_length;
|
||||
+ my $filler_fc = ("ss" . uni_to_native("\x{131}\x{69}\x{3bc}\x{e0}\x{e1}\x{b6}\x{ff}")) x $filler_length;
|
||||
+ my $filler_uc = ("SS" . uni_to_native("\x{49}\x{130}\x{39c}\x{c0}\x{c1}\x{b6}\x{178}")) x $filler_length;
|
||||
|
||||
use locale;
|
||||
setlocale(&POSIX::LC_CTYPE, $turkic_locale);
|
||||
|
||||
is (lc "IIIIIII$filler", "\x{131}\x{131}\x{131}\x{131}\x{131}\x{131}\x{131}$filler_lc",
|
||||
"lc non-UTF-8, in Turkic locale, beginning with a bunch of I's");
|
||||
+ is (fc "IIIIIII$filler", "\x{131}\x{131}\x{131}\x{131}\x{131}\x{131}\x{131}$filler_fc",
|
||||
+ "fc non-UTF-8, in Turkic locale, beginning with a bunch of I's");
|
||||
is (lc "${filler}IIIIIII$filler", "$filler_lc\x{131}\x{131}\x{131}\x{131}\x{131}\x{131}\x{131}$filler_lc",
|
||||
"lc non-UTF-8, in Turkic locale, a bunch of I's, but not at the beginning");
|
||||
+ is (fc "${filler}IIIIIII$filler", "$filler_fc\x{131}\x{131}\x{131}\x{131}\x{131}\x{131}\x{131}$filler_fc",
|
||||
+ "fc non-UTF-8, in Turkic locale, a bunch of I's, but not at the beginning");
|
||||
is (lc "${filler}I\x{307}$filler", "${filler_lc}i$filler_lc",
|
||||
"lc in Turkic locale with DOT ABOVE immediately following I");
|
||||
is (lc "${filler}I\x{307}IIIIII$filler", "${filler_lc}i\x{131}\x{131}\x{131}\x{131}\x{131}\x{131}$filler_lc",
|
||||
--
|
||||
2.26.2
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
From 036189b0a003875df7bf09c7f7fd702267f549e5 Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Sat, 26 Dec 2020 08:44:08 -0700
|
||||
Subject: [PATCH] Use perl.h versions of PERL_UNUSED_foo in XSUB.h
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This commit was applied to perl.h, but not to XSUB.h:
|
||||
|
||||
commit a730e3f230f364cffe49370f816f975ae7c9c403
|
||||
Author: Jarkko Hietaniemi <jhi@iki.fi>
|
||||
Date: Thu Sep 4 09:08:33 2014 -0400
|
||||
|
||||
Use sizeof() in UNUSED_ARG and UNUSED_VAR to avoid accessing the values.
|
||||
|
||||
The values might even be uninitialized in the case of PERL_UNUSED_VAR.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
XSUB.h | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/XSUB.h b/XSUB.h
|
||||
index 616d813840..c1e3959885 100644
|
||||
--- a/XSUB.h
|
||||
+++ b/XSUB.h
|
||||
@@ -108,10 +108,10 @@ is a lexical C<$_> in scope.
|
||||
*/
|
||||
|
||||
#ifndef PERL_UNUSED_ARG
|
||||
-# define PERL_UNUSED_ARG(x) ((void)x)
|
||||
+# define PERL_UNUSED_ARG(x) ((void)sizeof(x))
|
||||
#endif
|
||||
#ifndef PERL_UNUSED_VAR
|
||||
-# define PERL_UNUSED_VAR(x) ((void)x)
|
||||
+# define PERL_UNUSED_VAR(x) ((void)sizeof(x))
|
||||
#endif
|
||||
|
||||
#define ST(off) PL_stack_base[ax + (off)]
|
||||
--
|
||||
2.26.2
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
From 07319fdbb283f93cb655c3106b5237cbc7272038 Mon Sep 17 00:00:00 2001
|
||||
From: Tomasz Konojacki <me@xenu.pl>
|
||||
Date: Wed, 30 Dec 2020 14:03:02 +0100
|
||||
Subject: [PATCH] op.c: croak on "my $_" when "use utf8" is in effect
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Fixes #18449
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
op.c | 16 +++++++++-------
|
||||
t/op/mydef.t | 11 +++++++++--
|
||||
2 files changed, 18 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/op.c b/op.c
|
||||
index b2e12dd0c0..dce844d297 100644
|
||||
--- a/op.c
|
||||
+++ b/op.c
|
||||
@@ -730,6 +730,7 @@ PADOFFSET
|
||||
Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags)
|
||||
{
|
||||
PADOFFSET off;
|
||||
+ bool is_idfirst, is_default;
|
||||
const bool is_our = (PL_parser->in_my == KEY_our);
|
||||
|
||||
PERL_ARGS_ASSERT_ALLOCMY;
|
||||
@@ -738,14 +739,15 @@ Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags)
|
||||
Perl_croak(aTHX_ "panic: allocmy illegal flag bits 0x%" UVxf,
|
||||
(UV)flags);
|
||||
|
||||
+ is_idfirst = flags & SVf_UTF8
|
||||
+ ? isIDFIRST_utf8_safe((U8*)name + 1, name + len)
|
||||
+ : isIDFIRST_A(name[1]);
|
||||
+
|
||||
+ /* $_, @_, etc. */
|
||||
+ is_default = len == 2 && name[1] == '_';
|
||||
+
|
||||
/* complain about "my $<special_var>" etc etc */
|
||||
- if ( len
|
||||
- && !( is_our
|
||||
- || isALPHA(name[1])
|
||||
- || ( (flags & SVf_UTF8)
|
||||
- && isIDFIRST_utf8_safe((U8 *)name+1, name + len))
|
||||
- || (name[1] == '_' && len > 2)))
|
||||
- {
|
||||
+ if (!is_our && (!is_idfirst || is_default)) {
|
||||
const char * const type =
|
||||
PL_parser->in_my == KEY_sigvar ? "subroutine signature" :
|
||||
PL_parser->in_my == KEY_state ? "\"state\"" : "\"my\"";
|
||||
diff --git a/t/op/mydef.t b/t/op/mydef.t
|
||||
index 42a81d9ab0..225ce98e51 100644
|
||||
--- a/t/op/mydef.t
|
||||
+++ b/t/op/mydef.t
|
||||
@@ -6,10 +6,17 @@ BEGIN {
|
||||
set_up_inc('../lib');
|
||||
}
|
||||
|
||||
-plan tests => 1;
|
||||
-
|
||||
use strict;
|
||||
|
||||
eval 'my $_';
|
||||
like $@, qr/^Can't use global \$_ in "my" at /;
|
||||
|
||||
+{
|
||||
+ # using utf8 allows $_ to be declared with 'my'
|
||||
+ # GH #18449
|
||||
+ use utf8;
|
||||
+ eval 'my $_;';
|
||||
+ like $@, qr/^Can't use global \$_ in "my" at /;
|
||||
+}
|
||||
+
|
||||
+done_testing;
|
||||
--
|
||||
2.26.2
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
From cac138107138a9814b32c4de74426225628f1646 Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Sun, 17 Jan 2021 21:45:20 -0700
|
||||
Subject: [PATCH] Add missing entries to perldiag; GH #18276
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The ticket mentions yet another message, not addressed in this
|
||||
commit, "Insecure private-use override". That message is part of a
|
||||
hook for a so-far unimplemented module, so it actually doesn't ever get
|
||||
raised.
|
||||
|
||||
Committer: One correction per Grinnz comment in
|
||||
https://github.com/Perl/perl5/pull/18491
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
pod/perldiag.pod | 45 +++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 45 insertions(+)
|
||||
|
||||
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
|
||||
index 9c91630d39..63f57f220e 100644
|
||||
--- a/pod/perldiag.pod
|
||||
+++ b/pod/perldiag.pod
|
||||
@@ -2195,6 +2195,20 @@ single form when it must operate on them directly. Either you've passed
|
||||
an invalid file specification to Perl, or you've found a case the
|
||||
conversion routines don't handle. Drat.
|
||||
|
||||
+=item Error %s in expansion of %s
|
||||
+
|
||||
+(F) An error was encountered in handling a user-defined property
|
||||
+(L<perlunicode/User-Defined Character Properties>). These are
|
||||
+programmer written subroutines, hence subject to errors that may
|
||||
+prevent them from compiling or running. The calls to these subs are
|
||||
+C<eval>'d, and if there is a failure, this message is raised, using the
|
||||
+contents of C<$@> from the failed C<eval>.
|
||||
+
|
||||
+Another possibility is that tainted data was encountered somewhere in
|
||||
+the chain of expanding the property. If so, the message wording will
|
||||
+indicate that this is the problem. See L</Insecure user-defined
|
||||
+property %s>.
|
||||
+
|
||||
=item Eval-group in insecure regular expression
|
||||
|
||||
(F) Perl detected tainted data when trying to compile a regular
|
||||
@@ -2836,6 +2850,16 @@ not match 8 spaces.
|
||||
text. You should check the pattern to ensure that recursive patterns
|
||||
either consume text or fail.
|
||||
|
||||
+=item Infinite recursion in user-defined property
|
||||
+
|
||||
+(F) A user-defined property (L<perlunicode/User-Defined Character
|
||||
+Properties>) can depend on the definitions of other user-defined
|
||||
+properties. If the chain of dependencies leads back to this property,
|
||||
+infinite recursion would occur, were it not for the check that raised
|
||||
+this error.
|
||||
+
|
||||
+Restructure your property definitions to avoid this.
|
||||
+
|
||||
=item Infinite recursion via empty pattern
|
||||
|
||||
(F) You tried to use the empty pattern inside of a regex code block,
|
||||
@@ -6273,6 +6297,20 @@ lexicals that are initialized only once (see L<feature>):
|
||||
This use of C<my()> in a false conditional was deprecated beginning in
|
||||
Perl 5.10 and became a fatal error in Perl 5.30.
|
||||
|
||||
+=item Timeout waiting for another thread to define \p{%s}
|
||||
+
|
||||
+(F) The first time a user-defined property
|
||||
+(L<perlunicode/User-Defined Character Properties>) is used, its
|
||||
+definition is looked up and converted into an internal form for more
|
||||
+efficient handling in subsequent uses. There could be a race if two or
|
||||
+more threads tried to do this processing nearly simultaneously.
|
||||
+Instead, a critical section is created around this task, locking out all
|
||||
+but one thread from doing it. This message indicates that the thread
|
||||
+that is doing the conversion is taking an unexpectedly long time. The
|
||||
+timeout exists solely to prevent deadlock; it's long enough that the
|
||||
+system was likely thrashing and about to crash. There is no real remedy but
|
||||
+rebooting.
|
||||
+
|
||||
=item times not implemented
|
||||
|
||||
(F) Your version of the C library apparently doesn't do times(). I
|
||||
@@ -6846,6 +6884,13 @@ for the list of known options.
|
||||
L<perlrun|perlrun/-C [numberE<sol>list]> documentation of the C<-C> switch
|
||||
for the list of known options.
|
||||
|
||||
+=item Unknown user-defined property name \p{%s}
|
||||
+
|
||||
+(F) You specified to use a property within the C<\p{...}> which was a
|
||||
+syntactically valid user-defined property, but no definition was found
|
||||
+for it by the time one was required to proceed. Check your spelling.
|
||||
+See L<perlunicode/User-Defined Character Properties>.
|
||||
+
|
||||
=item Unknown verb pattern '%s' in regex; marked by S<<-- HERE> in m/%s/
|
||||
|
||||
(F) You either made a typo or have incorrectly put a C<*> quantifier
|
||||
--
|
||||
2.26.2
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From a2f57b06b018b254bee93e1a1265cfc09833366f Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Tue, 9 Feb 2021 11:32:15 -0700
|
||||
Subject: [PATCH] t/run/locale.t: Rmv LANGUAGE from environment
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This could cause interference with our tests on some platforms that have
|
||||
this environment variable.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
t/run/locale.t | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/t/run/locale.t b/t/run/locale.t
|
||||
index 8a04d1aea6..0f2a2ba457 100644
|
||||
--- a/t/run/locale.t
|
||||
+++ b/t/run/locale.t
|
||||
@@ -38,7 +38,7 @@ if (defined $ARGV[0] && $ARGV[0] ne "") {
|
||||
}
|
||||
|
||||
# reset the locale environment
|
||||
-delete local @ENV{'LANG', (grep /^LC_[A-Z]+$/, keys %ENV)};
|
||||
+delete local @ENV{'LANGUAGE', 'LANG', (grep /^LC_[A-Z]+$/, keys %ENV)};
|
||||
|
||||
# If user wants this to happen, they set the environment variable AND use
|
||||
# 'debug'
|
||||
--
|
||||
2.26.2
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
From 5f41fa466a67b5535aa8bcf4b814f242545ac7bd Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Sat, 27 Feb 2021 11:43:41 -0700
|
||||
Subject: [PATCH] regcomp.c: Remove memory leak
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This fixes GH #18604. There was a path through the code where a
|
||||
particular SV did not get its reference count decremented.
|
||||
|
||||
I did an audit of the function and came up with several other
|
||||
possiblities that are included in this commit.
|
||||
|
||||
Further, there would be leaks for some instances of finding syntax
|
||||
errors in the input pattern, or when warnings are fatalized. Those
|
||||
would require mortalizing some SVs, but that is beyond the scope of this
|
||||
commit.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
regcomp.c | 7 +++++++
|
||||
t/op/svleak.t | 3 ++-
|
||||
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/regcomp.c b/regcomp.c
|
||||
index e44c7a37e5..f5e5f581dc 100644
|
||||
--- a/regcomp.c
|
||||
+++ b/regcomp.c
|
||||
@@ -18765,6 +18765,12 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
|
||||
RExC_end = save_end;
|
||||
RExC_in_multi_char_class = 0;
|
||||
SvREFCNT_dec_NN(multi_char_matches);
|
||||
+ SvREFCNT_dec(properties);
|
||||
+ SvREFCNT_dec(cp_list);
|
||||
+ SvREFCNT_dec(simple_posixes);
|
||||
+ SvREFCNT_dec(posixes);
|
||||
+ SvREFCNT_dec(nposixes);
|
||||
+ SvREFCNT_dec(cp_foldable_list);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -20122,6 +20128,7 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
|
||||
RExC_parse - orig_parse);;
|
||||
SvREFCNT_dec(cp_list);;
|
||||
SvREFCNT_dec(only_utf8_locale_list);
|
||||
+ SvREFCNT_dec(upper_latin1_only_utf8_matches);
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/t/op/svleak.t b/t/op/svleak.t
|
||||
index 6acc298c3d..3df4838be8 100644
|
||||
--- a/t/op/svleak.t
|
||||
+++ b/t/op/svleak.t
|
||||
@@ -15,7 +15,7 @@ BEGIN {
|
||||
|
||||
use Config;
|
||||
|
||||
-plan tests => 150;
|
||||
+plan tests => 151;
|
||||
|
||||
# run some code N times. If the number of SVs at the end of loop N is
|
||||
# greater than (N-1)*delta at the end of loop 1, we've got a leak
|
||||
@@ -278,6 +278,7 @@ eleak(2,0,'/[[:ascii:]]/');
|
||||
eleak(2,0,'/[[.zog.]]/');
|
||||
eleak(2,0,'/[.zog.]/');
|
||||
eleak(2,0,'/|\W/', '/|\W/ [perl #123198]');
|
||||
+eleak(2,0,'/a\sb/', '/a\sb/ [GH #18604]');
|
||||
eleak(2,0,'no warnings; /(?[])/');
|
||||
eleak(2,0,'no warnings; /(?[[a]+[b]])/');
|
||||
eleak(2,0,'no warnings; /(?[[a]-[b]])/');
|
||||
--
|
||||
2.26.2
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
From 4e82c85b1c9c9b30253b8624470da6f20a6c0604 Mon Sep 17 00:00:00 2001
|
||||
From: Karl Williamson <khw@cpan.org>
|
||||
Date: Mon, 15 Mar 2021 21:01:47 -0600
|
||||
Subject: [PATCH] Fix broken left shift of IV_MIN under 'use integer'
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This fixes GH 18639
|
||||
|
||||
When I wrote this code, I conflated casting and complementing.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
pp.c | 3 ---
|
||||
t/op/bop.t | 9 ++++++++-
|
||||
2 files changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/pp.c b/pp.c
|
||||
index d365afea4c..baf0777a47 100644
|
||||
--- a/pp.c
|
||||
+++ b/pp.c
|
||||
@@ -2007,9 +2007,6 @@ static IV S_iv_shift(IV iv, int shift, bool left)
|
||||
* 18446744073709551552
|
||||
* */
|
||||
if (left) {
|
||||
- if (iv == IV_MIN) { /* Casting this to a UV is undefined behavior */
|
||||
- return 0;
|
||||
- }
|
||||
return (IV) (((UV) iv) << shift);
|
||||
}
|
||||
|
||||
diff --git a/t/op/bop.t b/t/op/bop.t
|
||||
index 07f057d0a9..31b6531a03 100644
|
||||
--- a/t/op/bop.t
|
||||
+++ b/t/op/bop.t
|
||||
@@ -18,7 +18,7 @@ BEGIN {
|
||||
# If you find tests are failing, please try adding names to tests to track
|
||||
# down where the failure is, and supply your new names as a patch.
|
||||
# (Just-in-time test naming)
|
||||
-plan tests => 502;
|
||||
+plan tests => 503;
|
||||
|
||||
# numerics
|
||||
ok ((0xdead & 0xbeef) == 0x9ead);
|
||||
@@ -33,6 +33,13 @@ ok ((33023 >> 7) == 257);
|
||||
# signed vs. unsigned
|
||||
ok ((~0 > 0 && do { use integer; ~0 } == -1));
|
||||
|
||||
+{ # GH #18639
|
||||
+ my $iv_min = -(~0 >> 1) - 1;
|
||||
+ my $shifted;
|
||||
+ { use integer; $shifted = $iv_min << 0 };
|
||||
+ is($shifted, $iv_min, "IV_MIN << 0 yields IV_MIN under 'use integer'");
|
||||
+}
|
||||
+
|
||||
my $bits = 0;
|
||||
for (my $i = ~0; $i; $i >>= 1) { ++$bits; }
|
||||
my $cusp = 1 << ($bits - 1);
|
||||
--
|
||||
2.26.3
|
||||
|
265
perl.spec
265
perl.spec
|
@ -1,4 +1,4 @@
|
|||
%global perl_version 5.32.0
|
||||
%global perl_version 5.32.1
|
||||
%global perl_epoch 4
|
||||
%global perl_arch_stem -thread-multi
|
||||
%global perl_archname %{_arch}-%{_os}%{perl_arch_stem}
|
||||
|
@ -100,7 +100,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: 460%{?dist}
|
||||
Release: 471.0.riscv64%{?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
|
||||
|
@ -164,7 +164,7 @@ Patch12: perl-5.27.8-hints-linux-Add-lphtread-to-lddlflags.patch
|
|||
# Pass the correct CFLAGS to dtrace
|
||||
Patch13: perl-5.28.0-Pass-CFLAGS-to-dtrace.patch
|
||||
|
||||
# Do not use a C compiler reserved identifiers, in upstream after 5.33.0
|
||||
# Do not use C compiler reserved identifiers, in upstream after 5.33.0
|
||||
Patch14: perl-5.33.0-MUTABLE_PTR-Rmv-non-standard-syntax.patch
|
||||
|
||||
# Fix SvUV_nomg() macro definition, in upstream after 5.33.0
|
||||
|
@ -180,9 +180,6 @@ Patch17: perl-5.33.0-ext-XS-APItest-t-utf8_warn_base.pl-Fix-a-couple-test
|
|||
Patch18: perl-5.33.0-make-fh-error-report-errors-from-both-input-and-outp.patch
|
||||
Patch19: perl-5.33.0-IO-Handle-clear-the-error-on-both-input-and-output-s.patch
|
||||
|
||||
# Fix a link to Unicode Technical Standard #18, GH#17881, in upstream after 5.33.0
|
||||
Patch20: perl-5.32.0-Fix-404-and-text-in-New-Unicode-properties-section.patch
|
||||
|
||||
# Fix setting a non-blocking mode in IO::Socket::UNIX, GH#17787,
|
||||
# in upstream after 5.33.0
|
||||
Patch21: perl-5.33.0-IO-Socket-UNIX-synchronize-behavior-with-module-docu.patch
|
||||
|
@ -201,10 +198,6 @@ Patch25: perl-5.33.0-reentr.c-Buffer-sizes-for-asctime_r-ctime_r-are-smal
|
|||
# in upstream after 5.33.0
|
||||
Patch26: perl-5.33.0-reentr.c-Prevent-infinite-looping.patch
|
||||
|
||||
# Fix a buffer overread in when reallocating formats, GH#17844,
|
||||
# in upstream after 5.33.0
|
||||
Patch27: perl-5.33.0-perl-17844-don-t-update-SvCUR-until-after-we-ve-done.patch
|
||||
|
||||
# Fix a number of arguments passed to a BOOT XS subroutine, GH#17755,
|
||||
# in upstream after 5.33.0
|
||||
Patch28: perl-5.33.0-XSUB.h-fix-MARK-and-items-variables-inside-BOOT-XSUB.patch
|
||||
|
@ -213,6 +206,80 @@ Patch28: perl-5.33.0-XSUB.h-fix-MARK-and-items-variables-inside-BOOT-XSUB
|
|||
# GH#18019, in upstream after 5.33.0
|
||||
Patch29: perl-5.33.0-IO-Handle-Fix-a-spurious-error-reported-for-regular-.patch
|
||||
|
||||
# Fix inheritance resolution of lexial objects in a debugger, GH#17661,
|
||||
# in upstream after 5.33.0
|
||||
Patch30: perl-5.33.0-fix-C-i-obj-where-obj-is-a-lexical.patch
|
||||
|
||||
# Fix sorting with a block that calls return, GH#18081,
|
||||
# in upstream after 5.33.1
|
||||
Patch35: perl-5.33.1-sort-return-foo.patch
|
||||
|
||||
# Fix sv_collxfrm macro to respect locale, in upstream after 5.33.2
|
||||
Patch38: perl-5.33.2-sv.h-sv_collxfrm-didn-t-work-properly.patch
|
||||
|
||||
# Fix an iterator signedness in handling an mro exception, GH#18155,
|
||||
# in upstream after 5.33.2
|
||||
Patch39: perl-5.33.2-mro.xs-Fix-compiler-warning.patch
|
||||
|
||||
# Fix a code flow in Perl_sv_inc_nomg(), in upstream after 5.33.2
|
||||
Patch40: perl-5.33.2-sv.c-Added-missing-braces-in-Perl_sv_inc_nomg.patch
|
||||
|
||||
# Fix an undefined behavior in Perl_custom_op_get_field(),
|
||||
# in upstream after 5.33.3
|
||||
Patch41: perl-5.33.3-Perl_custom_op_get_field-remove-undef-behaviour.patch
|
||||
|
||||
# Fix Config variable names in in t/op tests, in upstream after 5.33.3
|
||||
Patch42: perl-5.33.3-t-op-inc.t-t-op-hexfp.t-t-op-sprintf2.t-Add-missing-.patch
|
||||
|
||||
# Fix fetching a magic on the stacked file test operators,
|
||||
# in upstream after 5.33.3
|
||||
Patch43: perl-5.33.3-fetch-magic-on-the-first-stacked-filetest-not-the-la.patch
|
||||
|
||||
# Fix a crash in optimizing split(), GH#18232, in upstream after 5.33.3
|
||||
Patch44: perl-5.32.0-Add-av_count.patch
|
||||
Patch45: perl-5.33.2-Remove-Perl_av_top_index.patch
|
||||
Patch46: perl-5.32.0-pp_split-no-SWITCHSTACK-in-ary-split-.-optimisation.patch
|
||||
Patch47: perl-5.33.3-pp_split-add-TonyC-s-stack-not-refcounted-suggestion.patch
|
||||
|
||||
# Make accessing environment by DynaLoader thread-safe,
|
||||
# in upstream after 5.33.4
|
||||
Patch48: perl-5.32.1-DynaLoader-use-PerlEnv_getenv.patch
|
||||
|
||||
# Use duplocale() if available, in upstream after 5.33.4
|
||||
Patch49: perl-5.33.4-locale.c-Fix-typo-in-ifdef.patch
|
||||
|
||||
# Fix fc() in Turkish locale, in upstream after 5.33.5
|
||||
Patch50: perl-5.33.5-Fix-buggy-fc-in-Turkish-locale.patch
|
||||
|
||||
# Fix croaking on "my $_" when "use utf8" is in effect, GH#18449,
|
||||
# in upstream after 5.33.5
|
||||
Patch51: perl-5.33.5-op.c-croak-on-my-_-when-use-utf8-is-in-effect.patch
|
||||
|
||||
# Fix PERL_UNUSED_ARG() definition in XSUB.h, in upstream after 5.33.5
|
||||
Patch52: perl-5.33.5-Use-perl.h-versions-of-PERL_UNUSED_foo-in-XSUB.h.patch
|
||||
|
||||
# Add missing entries to perldiag, GH#18276, in upstream after 5.33.6
|
||||
Patch53: perl-5.33.6-Add-missing-entries-to-perldiag-GH-18276.patch
|
||||
|
||||
# Protect locale tests from LANGUAGE environment variable,
|
||||
# in upstream after 5.33.6
|
||||
Patch54: perl-5.33.6-t-run-locale.t-Rmv-LANGUAGE-from-environment.patch
|
||||
|
||||
# Prevent the number of buckets in a hash from getting too large,
|
||||
# in upstream after 5.33.6
|
||||
Patch55: perl-5.32.1-hv.c-add-a-guard-clause-to-prevent-the-number-of-buc.patch
|
||||
|
||||
# Fix a memory leak when compiling a regular expression, GH#18604,
|
||||
# in upstream after 5.33.7
|
||||
Patch56: perl-5.33.7-regcomp.c-Remove-memory-leak.patch
|
||||
|
||||
# Fix dumping a hash entry of PL_strtab type, in upstream after 5.33.7
|
||||
Patch57: perl-5.32.1-Perl_do_sv_dump-handle-PL_strtab.patch
|
||||
|
||||
# Fix an arithmetic left shift of a minimal integer value, GH#18639,
|
||||
# in upstream after 5.33.8
|
||||
Patch58: perl-5.33.8-Fix-broken-left-shift-of-IV_MIN-under-use-integer.patch
|
||||
|
||||
# Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048
|
||||
Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch
|
||||
|
||||
|
@ -270,7 +337,7 @@ BuildRequires: rsyslog
|
|||
|
||||
|
||||
# compat macro needed for rebuild
|
||||
%global perl_compat perl(:MODULE_COMPAT_5.32.0)
|
||||
%global perl_compat perl(:MODULE_COMPAT_5.32.1)
|
||||
|
||||
Requires: %perl_compat
|
||||
Requires: perl-interpreter%{?_isa} = %{perl_epoch}:%{perl_version}-%{release}
|
||||
|
@ -452,6 +519,7 @@ Summary: The libraries for the perl run-time
|
|||
License: (GPL+ or Artistic) and BSD and HSRL and MIT and UCD and Public domain
|
||||
# Compat provides
|
||||
Provides: %perl_compat
|
||||
Provides: perl(:MODULE_COMPAT_5.32.0)
|
||||
# Interpreter version to fulfil required genersted from "require 5.006;"
|
||||
Provides: perl(:VERSION) = %{perl_version}
|
||||
# Integeres are 64-bit on all platforms
|
||||
|
@ -473,6 +541,10 @@ Provides: perl(utf8_heavy.pl)
|
|||
# utf8 and utf8_heavy.pl require Carp, re, strict, warnings, XSLoader
|
||||
# For AnyDBM_File
|
||||
Suggests: perl(DB_File)
|
||||
# XSLoader requires DynaLoder
|
||||
Requires: perl(DynaLoader)
|
||||
# Encode is loaded in BOOT section of PerlIO::encoding
|
||||
Requires: perl(Encode)
|
||||
# File::Spec loaded by _charnames.pm that is loaded by \N{}
|
||||
Requires: perl(File::Spec)
|
||||
%if %{with gdbm}
|
||||
|
@ -487,8 +559,8 @@ Suggests: perl(ODBM_File)
|
|||
%endif
|
||||
|
||||
# Remove private redefinitions
|
||||
# XSLoader redefines DynaLoader name space for compatibility, but does not
|
||||
# load the DynaLoader.pm (though the DynaLoader.xs is compiled into libperl).
|
||||
# XSLoader redefines DynaLoader name space for compatibility, but it still
|
||||
# loads DynaLoader.pm (though DynaLoader.xs is compiled into libperl).
|
||||
%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\((charnames|DynaLoader)\\)$
|
||||
|
||||
%description libs
|
||||
|
@ -953,6 +1025,15 @@ License: GPL+ or Artistic
|
|||
Epoch: 0
|
||||
Version: 2.27
|
||||
Requires: make
|
||||
Requires: %perl_compat
|
||||
# Some subpackaged modules are not dual-lived. E.g. "open". If a distribution
|
||||
# on CPAN declares a dependency on such module, CPAN client will fail,
|
||||
# because the only provider is a perl distribution.
|
||||
# Another issue is with dual-lived modules whose distribution actually does
|
||||
# not declare all needed core dependencies and the installation would also
|
||||
# fail.
|
||||
# As a result, any CPAN client must run-require the complete perl.
|
||||
Requires: perl
|
||||
# Prefer Archive::Tar and Compress::Zlib over tar and gzip
|
||||
Requires: perl(Archive::Tar) >= 1.50
|
||||
Requires: perl(base)
|
||||
|
@ -996,7 +1077,6 @@ Requires: perl(Module::Build)
|
|||
%if ! %{defined perl_bootstrap}
|
||||
Requires: perl(Text::Glob)
|
||||
%endif
|
||||
Requires: %perl_compat
|
||||
Provides: cpan = %{version}
|
||||
%if %{defined perl_bootstrap}
|
||||
%gendep_perl_CPAN
|
||||
|
@ -1160,6 +1240,7 @@ Recommends: perl(File::Basename)
|
|||
Recommends: perl(File::Path)
|
||||
Requires: perl(IO::Socket)
|
||||
Requires: perl(meta_notation) = %{perl_version}
|
||||
Requires: perl(mro)
|
||||
%if !%{defined perl_bootstrap}
|
||||
Suggests: perl(PadWalker) >= 0.08
|
||||
%endif
|
||||
|
@ -2307,7 +2388,13 @@ License: GPL+ or Artistic
|
|||
# Epoch bump for clean upgrade over old standalone package
|
||||
Epoch: 1
|
||||
Version: 1.10
|
||||
Requires: perl(Compress::Zlib)
|
||||
BuildRequires: gzip
|
||||
# The code defaults to Compress::Zlib, but a user can override it to gzip by
|
||||
# importing :gzip_external symbol
|
||||
Requires: gzip
|
||||
Requires: perl(Compress::Zlib) >= 2
|
||||
# IO::Handle used if gzip backend is requested
|
||||
Requires: perl(IO::Handle)
|
||||
Requires: %perl_compat
|
||||
%if %{defined perl_bootstrap}
|
||||
%gendep_perl_IO_Zlib
|
||||
|
@ -2315,10 +2402,9 @@ Requires: %perl_compat
|
|||
BuildArch: noarch
|
||||
|
||||
%description IO-Zlib
|
||||
This modules provides an IO:: style interface to the Compress::Zlib package.
|
||||
The main advantage is that you can use an IO::Zlib object in much the same way
|
||||
as an IO::File object so you can have common code that doesn't know which sort
|
||||
of file it is using.
|
||||
IO::Zlib provides an IO:: style interface to Compress::Zlib and hence to
|
||||
gzip/zlib-compressed files. It provides many of the same methods as the
|
||||
IO::Handle interface.
|
||||
|
||||
|
||||
%if %{dual_life} || %{rebuild_from_scratch}
|
||||
|
@ -2752,7 +2838,7 @@ encoder/decoder. These encoding methods are specified in RFC 2045 - MIME
|
|||
Summary: What modules are shipped with versions of perl
|
||||
License: GPL+ or Artistic
|
||||
Epoch: 1
|
||||
Version: 5.20200620
|
||||
Version: 5.20210123
|
||||
Requires: %perl_compat
|
||||
Requires: perl(List::Util)
|
||||
Requires: perl(version) >= 0.88
|
||||
|
@ -2770,7 +2856,7 @@ are shipped with each version of perl.
|
|||
Summary: Tool for listing modules shipped with perl
|
||||
License: GPL+ or Artistic
|
||||
Epoch: 1
|
||||
Version: 5.20200620
|
||||
Version: 5.20210123
|
||||
Requires: %perl_compat
|
||||
Requires: perl(feature)
|
||||
Requires: perl(version) >= 0.88
|
||||
|
@ -2970,7 +3056,7 @@ be used the next time your program runs.
|
|||
Summary: Disable named opcodes when compiling a perl code
|
||||
License: GPL+ or Artistic
|
||||
Epoch: 0
|
||||
Version: 1.47
|
||||
Version: 1.48
|
||||
Requires: %perl_compat
|
||||
%if %{defined perl_bootstrap}
|
||||
%gendep_perl_Opcode
|
||||
|
@ -3948,7 +4034,7 @@ and localtime () functions.
|
|||
%package Time-HiRes
|
||||
Summary: High resolution alarm, sleep, gettimeofday, interval timers
|
||||
License: GPL+ or Artistic
|
||||
Epoch: 0
|
||||
Epoch: 4
|
||||
Version: 1.9764
|
||||
Requires: %perl_compat
|
||||
Requires: perl(Carp)
|
||||
|
@ -4218,16 +4304,37 @@ you're not running VMS, this module does nothing.
|
|||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
%patch22 -p1
|
||||
%patch23 -p1
|
||||
%patch24 -p1
|
||||
%patch25 -p1
|
||||
%patch26 -p1
|
||||
%patch27 -p1
|
||||
%patch28 -p1
|
||||
%patch29 -p1
|
||||
%patch30 -p1
|
||||
%patch35 -p1
|
||||
%patch38 -p1
|
||||
%patch39 -p1
|
||||
%patch40 -p1
|
||||
%patch41 -p1
|
||||
%patch42 -p1
|
||||
%patch43 -p1
|
||||
%patch44 -p1
|
||||
%patch45 -p1
|
||||
%patch46 -p1
|
||||
%patch47 -p1
|
||||
%patch48 -p1
|
||||
%patch49 -p1
|
||||
%patch50 -p1
|
||||
%patch51 -p1
|
||||
%patch52 -p1
|
||||
%patch53 -p1
|
||||
%patch54 -p1
|
||||
%patch55 -p1
|
||||
%patch56 -p1
|
||||
%patch57 -p1
|
||||
%patch58 -p1
|
||||
%patch200 -p1
|
||||
%patch201 -p1
|
||||
|
||||
|
@ -4248,22 +4355,43 @@ perl -x patchlevel.h \
|
|||
'Fedora Patch11: Replace EU::MakeMaker dependency with EU::MM::Utils in IPC::Cmd (bug #1129443)' \
|
||||
'Fedora Patch12: Link XS modules to pthread library to fix linking with -z defs' \
|
||||
'Fedora Patch13: Pass the correct CFLAGS to dtrace' \
|
||||
'Fedora Patch14: Do not use a C compiler reserved identifiers' \
|
||||
'Fedora Patch14: Do not use C compiler reserved identifiers' \
|
||||
'Fedora Patch15: Fix SvUV_nomg() macro definition' \
|
||||
'Fedora Patch16: Fix SvTRUE() documentation' \
|
||||
'Fedora Patch17: Fix ext/XS-APItest/t/utf8_warn_base.pl tests' \
|
||||
'Fedora Patch18: Fix IO::Handle::error() to report write errors (GH#6799)' \
|
||||
'Fedora Patch19: Fix IO::Handle::error() to report write errors (GH#6799)' \
|
||||
'Fedora Patch20: Fix a link to Unicode Technical Standard #18 (GH#17881)' \
|
||||
'Fedora Patch21: Fix setting a non-blocking mode in IO::Socket::UNIX (GH#17787)' \
|
||||
'Fedora Patch22: Fix running actions after stepping in a debugger (GH#17901)' \
|
||||
'Fedora Patch23: Fix running actions after stepping in a debugger (GH#17901)' \
|
||||
'Fedora Patch24: Fix running actions after stepping in a debugger (GH#17901)' \
|
||||
'Fedora Patch25: Fix a buffer size for asctime_r() and ctime_r() functions' \
|
||||
'Fedora Patch26: Prevent from an integer overflow in RenewDouble() macro' \
|
||||
'Fedora Patch27: Fix a buffer overread in when reallocating formats (GH#17844)' \
|
||||
'Fedora Patch28: Fix a number of arguments passed to a BOOT XS subroutine (GH#17755)' \
|
||||
'Fedora Patch29: Fix an IO::Handle spurious error reported for regular file handles (GH#18019)' \
|
||||
'Fedora Patch30: Fix inheritance resolution of lexial objects in a debugger (GH#17661)' \
|
||||
'Fedora Patch35: Fix sorting with a block that calls return (GH#18081)' \
|
||||
'Fedora Patch38: Fix sv_collxfrm macro to respect locale' \
|
||||
'Fedora Patch39: Fix an iterator signedness in handling an mro exception (GH#18155)' \
|
||||
'Fedora Patch40: Fix a code flow in Perl_sv_inc_nomg()' \
|
||||
'Fedora Patch41: Fix an undefined behavior in Perl_custom_op_get_field()' \
|
||||
'Fedora Patch42: Fix Config variable names in in t/op tests' \
|
||||
'Fedora Patch43: Fix fetching a magic on the stacked file test operators' \
|
||||
'Fedora Patch44: Fix a crash in optimizing split() (GH#18232)' \
|
||||
'Fedora Patch45: Fix a crash in optimizing split() (GH#18232)' \
|
||||
'Fedora Patch46: Fix a crash in optimizing split() (GH#18232)' \
|
||||
'Fedora Patch47: Fix a crash in optimizing split() (GH#18232)' \
|
||||
'Fedora Patch48: Make accessing environment by DynaLoader thread-safe' \
|
||||
'Fedora Patch49: Use duplocale() if available' \
|
||||
'Fedora Patch50: Fix fc() in Turkish locale' \
|
||||
'Fedora Patch51: Fix croaking on "my $_" when "use utf8" is in effect (GH#18449)' \
|
||||
'Fedora Patch52: Fix PERL_UNUSED_ARG() definition in XSUB.h' \
|
||||
'Fedora Patch53: Add missing entries to perldiag (GH#18276)' \
|
||||
'Fedora Patch54: Protect locale tests from LANGUAGE environment variable' \
|
||||
'Fedora Patch55: Prevent the number of buckets in a hash from getting too large' \
|
||||
'Fedora Patch56: Fix a memory leak when compiling a regular expression (GH#18604)' \
|
||||
'Fedora Patch57: Fix dumping a hash entry of PL_strtab type' \
|
||||
'Fedora Patch57: Fix an arithmetic left shift of a minimal integer value (GH#18639)' \
|
||||
'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux' \
|
||||
'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \
|
||||
%{nil}
|
||||
|
@ -5153,6 +5281,7 @@ popd
|
|||
%{privlib}/pod/perlfreebsd.pod
|
||||
%{privlib}/pod/perlfunc.pod
|
||||
%{privlib}/pod/perlgit.pod
|
||||
%{privlib}/pod/perlgov.pod
|
||||
%{privlib}/pod/perlgpl.pod
|
||||
%{privlib}/pod/perlguts.pod
|
||||
%{privlib}/pod/perlhack.pod
|
||||
|
@ -5214,6 +5343,7 @@ popd
|
|||
%{privlib}/pod/perlretut.pod
|
||||
%{privlib}/pod/perlriscos.pod
|
||||
%{privlib}/pod/perlsec.pod
|
||||
%{privlib}/pod/perlsecpolicy.pod
|
||||
%{privlib}/pod/perlsolaris.pod
|
||||
%{privlib}/pod/perlsource.pod
|
||||
%{privlib}/pod/perlstyle.pod
|
||||
|
@ -5274,6 +5404,7 @@ popd
|
|||
%{_mandir}/man1/perlfreebsd.*
|
||||
%{_mandir}/man1/perlfunc.*
|
||||
%{_mandir}/man1/perlgit.*
|
||||
%{_mandir}/man1/perlgov.*
|
||||
%{_mandir}/man1/perlgpl.*
|
||||
%{_mandir}/man1/perlguts.*
|
||||
%{_mandir}/man1/perlhack.*
|
||||
|
@ -5335,6 +5466,7 @@ popd
|
|||
%{_mandir}/man1/perlretut.*
|
||||
%{_mandir}/man1/perlriscos.*
|
||||
%{_mandir}/man1/perlsec.*
|
||||
%{_mandir}/man1/perlsecpolicy.*
|
||||
%{_mandir}/man1/perlsolaris.*
|
||||
%{_mandir}/man1/perlsource.*
|
||||
%{_mandir}/man1/perlstyle.*
|
||||
|
@ -5470,6 +5602,7 @@ popd
|
|||
%endif
|
||||
|
||||
%files ExtUtils-Constant
|
||||
%dir %{privlib}/ExtUtils
|
||||
%{privlib}/ExtUtils/Constant
|
||||
%{privlib}/ExtUtils/Constant.pm
|
||||
%{_mandir}/man3/ExtUtils::Constant::*
|
||||
|
@ -5719,7 +5852,6 @@ popd
|
|||
%{privlib}/File/Temp.pm
|
||||
%{_mandir}/man3/File::Temp.3*
|
||||
%else
|
||||
%dir %exclude %{privlib}/File
|
||||
%exclude %{privlib}/File/Temp.pm
|
||||
%exclude %{_mandir}/man3/File::Temp.3*
|
||||
%endif
|
||||
|
@ -6241,7 +6373,6 @@ popd
|
|||
%{privlib}/Module/CoreList.pod
|
||||
%{_mandir}/man3/Module::CoreList*
|
||||
%else
|
||||
%exclude %dir %{privlib}/Module
|
||||
%exclude %{privlib}/Module/CoreList
|
||||
%exclude %{privlib}/Module/CoreList.pm
|
||||
%exclude %{privlib}/Module/CoreList.pod
|
||||
|
@ -6263,7 +6394,6 @@ popd
|
|||
%{privlib}/Module/Load.pm
|
||||
%{_mandir}/man3/Module::Load.*
|
||||
%else
|
||||
%exclude %dir %{privlib}/Module
|
||||
%exclude %{privlib}/Module/Load.pm
|
||||
%exclude %{_mandir}/man3/Module::Load.*
|
||||
%endif
|
||||
|
@ -6274,7 +6404,6 @@ popd
|
|||
%{privlib}/Module/Load
|
||||
%{_mandir}/man3/Module::Load::Conditional*
|
||||
%else
|
||||
%exclude %dir %{privlib}/Module
|
||||
%exclude %{privlib}/Module/Load
|
||||
%exclude %{_mandir}/man3/Module::Load::Conditional*
|
||||
%endif
|
||||
|
@ -6290,7 +6419,6 @@ popd
|
|||
%{privlib}/Module/Metadata.pm
|
||||
%{_mandir}/man3/Module::Metadata.3pm*
|
||||
%else
|
||||
%exclude %dir %{privlib}/Module
|
||||
%exclude %{privlib}/Module/Metadata.pm
|
||||
%exclude %{_mandir}/man3/Module::Metadata.3pm*
|
||||
%endif
|
||||
|
@ -6429,7 +6557,7 @@ popd
|
|||
%{archlib}/asm
|
||||
%{archlib}/asm-generic
|
||||
%{archlib}/bits
|
||||
%{archlib}/features.ph
|
||||
%{archlib}/features*.ph
|
||||
%{archlib}/gnu
|
||||
%{archlib}/_h2ph_pre.ph
|
||||
%ifnarch ppc64le
|
||||
|
@ -6787,7 +6915,6 @@ popd
|
|||
%{_mandir}/man3/Text::Tabs.*
|
||||
%{_mandir}/man3/Text::Wrap.*
|
||||
%else
|
||||
%exclude %dir %{privlib}/Text
|
||||
%exclude %{privlib}/Text/Tabs.pm
|
||||
%exclude %{privlib}/Text/Wrap.pm
|
||||
%exclude %{_mandir}/man3/Text::Tabs.*
|
||||
|
@ -6871,7 +6998,6 @@ popd
|
|||
%{privlib}/Time/Local.pm
|
||||
%{_mandir}/man3/Time::Local.*
|
||||
%else
|
||||
%exclude %dir %{privlib}/Time
|
||||
%exclude %{privlib}/Time/Local.pm
|
||||
%exclude %{_mandir}/man3/Time::Local.*
|
||||
%endif
|
||||
|
@ -6981,11 +7107,72 @@ popd
|
|||
|
||||
# Old changelog entries are preserved in CVS.
|
||||
%changelog
|
||||
* Thu Oct 07 2021 David Abdurachmanov <david.abdurachmanov@gmail.com> - 4:5.32.1-471.0.riscv64
|
||||
- Disable LTO
|
||||
|
||||
* Wed Jun 23 2021 Petr Pisar <ppisar@redhat.com> - 4:5.32.1-471
|
||||
- XSLoader requires DynaLoader
|
||||
|
||||
* Wed Jun 16 2021 Jitka Plesnikova <jplesnik@redhat.com> - 4:5.32.1-470
|
||||
- Updated list of *.ph files (bug#1972637)
|
||||
|
||||
* Wed Mar 31 2021 Petr Pisar <ppisar@redhat.com> - 4:5.32.1-469
|
||||
- Fix dumping a hash entry of PL_strtab type
|
||||
- Fix an arithmetic left shift of a minimal integer value (GH#18639)
|
||||
|
||||
* Thu Mar 04 2021 Petr Pisar <ppisar@redhat.com> - 4:5.32.1-468
|
||||
- Protect locale tests from LANGUAGE environment variable
|
||||
- Prevent the number of buckets in a hash from getting too large
|
||||
- Fix a memory leak when compiling a regular expression (GH#18604)
|
||||
|
||||
* Tue Feb 09 2021 Petr Pisar <ppisar@redhat.com> - 4:5.32.1-467
|
||||
- Fix a crash in optimizing split() (GH#18232)
|
||||
- Make accessing environment by DynaLoader thread-safe
|
||||
- Use duplocale() if available
|
||||
- Fix fc() in Turkish locale
|
||||
- Fix croaking on "my $_" when "use utf8" is in effect (GH#18449)
|
||||
- Fix PERL_UNUSED_ARG() definition in XSUB.h
|
||||
- Add missing entries to perldiag (GH#18276)
|
||||
|
||||
* Mon Jan 25 2021 Jitka Plesnikova <jplesnik@redhat.com> - 4:5.32.1-466
|
||||
- 5.32.1 bump (see <https://metacpan.org/pod/release/SHAY/perl-5.32.1/pod/perldelta.pod>
|
||||
or release notes)
|
||||
|
||||
* Wed Dec 02 2020 Jitka Plesnikova <jplesnik@redhat.com> - 4:5.32.0-465
|
||||
- Run-require perl(Encode) by perl-libs
|
||||
|
||||
* Thu Nov 12 2020 Petr Pisar <ppisar@redhat.com> - 4:5.32.0-464
|
||||
- Fix an undefined behavior in Perl_custom_op_get_field()
|
||||
- Fix Config variable names in in t/op tests
|
||||
- Fix fetching a magic on the stacked file test operators
|
||||
|
||||
* Wed Sep 23 2020 Petr Pisar <ppisar@redhat.com> - 4:5.32.0-463
|
||||
- Run-require complete perl by perl-CPAN
|
||||
- Fix ownership of /usr/share/perl5/{ExtUtils,File,Module,Text,Time} directories
|
||||
- Fix a buffer overflow when compiling a regular expression with a bracketed
|
||||
character class with a white space
|
||||
- Fix a mismatch with the recursive subpatterns (GH#18096)
|
||||
- Update perl-IO-Zlib metadata
|
||||
- Fix sv_collxfrm macro to respect locale
|
||||
- Fix an iterator signedness in handling an mro exception (GH#18155)
|
||||
- Fix a code flow in Perl_sv_inc_nomg()
|
||||
|
||||
* Thu Aug 27 2020 Petr Pisar <ppisar@redhat.com> - 4:5.32.0-462
|
||||
- Fix inheritance resolution of lexial objects in a debugger (GH#17661)
|
||||
- Fix a misoptimization when assignig a list in a list context (GH#17816)
|
||||
- Fix handling left-hand-side undef when assigning a list (GH#16685)
|
||||
- Fix a memory leak when compiling a long regular expression (GH#18054)
|
||||
- Fix handling exceptions in a global destruction (GH#18063)
|
||||
- Fix sorting with a block that calls return (GH#18081)
|
||||
|
||||
* Fri Aug 21 2020 Jeff Law <law@redhat.com> - 4:5.32.0-461
|
||||
- Re-enable LTO
|
||||
|
||||
* Thu Aug 06 2020 Petr Pisar <ppisar@redhat.com> - 4:5.32.0-460
|
||||
- Fix an IO::Handle spurious error reported for regular file handles (GH#18019)
|
||||
|
||||
* Wed Aug 05 2020 Petr Pisar <ppisar@redhat.com> - 4:5.32.0-459
|
||||
- Do not use a C compiler reserved identifiers
|
||||
- Do not use C compiler reserved identifiers
|
||||
- Fix SvUV_nomg() macro definition
|
||||
- Fix SvTRUE() documentation
|
||||
- Fix ext/XS-APItest/t/utf8_warn_base.pl tests
|
||||
|
@ -7255,7 +7442,7 @@ popd
|
|||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Wed Jan 16 2019 Petr Pisar <ppisar@redhat.com> - 4:5.28.1-431
|
||||
- Remove a fix for un undefined C behavior in NULL pointer arithmetics
|
||||
- Remove a fix for an undefined C behavior in NULL pointer arithmetics
|
||||
(RT#133223) because it changes perl ABI
|
||||
|
||||
* Mon Jan 14 2019 Petr Pisar <ppisar@redhat.com> - 4:5.28.1-430
|
||||
|
@ -7264,7 +7451,7 @@ popd
|
|||
- Fix reporting a line number for non-terminated prototypes (RT#133524)
|
||||
- Fix first eof() return value (RT#133721)
|
||||
- Fix a crash when compiling a malformed form (RT#132158)
|
||||
- Fix un undefined C behavior in NULL pointer arithmetics (RT#133223)
|
||||
- Fix an undefined C behavior in NULL pointer arithmetics (RT#133223)
|
||||
- Prevent long jumps from clobbering local variables (RT#133575)
|
||||
- Fix a mismatch with a case-insesitive regular expression on a text with ligatures
|
||||
(RT#133756)
|
||||
|
|
2
sources
2
sources
|
@ -1 +1 @@
|
|||
SHA512 (perl-5.32.0.tar.xz) = 1540247415893bbd94dfeede7b4fba6052688dc0bf27ced817f448246fcdc6e9a6486abc34577dec5b00bf02ed607b2d24ccd4977c3b3c51e8e6edfc0b81c760
|
||||
SHA512 (perl-5.32.1.tar.xz) = 3443c75aea91f0fe3712fee576239f1946d2301b8f7390b690e2f5d070fe71af8f9fa7769e42086c2d33d5f84370f80368fa9350b4f10cc0ac3e6c1f6209d8f9
|
||||
|
|
Loading…
Reference in New Issue