This is a live mirror of the Perl 5 development currently hosted at
4 years agoEnsure temp directories are cleaned up.
James E Keenan [Thu, 26 Apr 2018 20:51:39 +0000 (16:51 -0400)]
Ensure temp directories are cleaned up.

Tux reported that on certain platforms File::Temp::tempdir(CLEANUP => 1) was
not cleaning up after itself properly.  Guarantee that this cleanup takes
place in and END block.


4 years agolib/locale.t: TODO some locales on Solaris
Karl Williamson [Sat, 28 Apr 2018 16:18:05 +0000 (10:18 -0600)]
lib/locale.t: TODO some locales on Solaris

There is a bug in Solaris with locales which have a multi-byte decimal
radix character.  Make these TODO, like we do cygwin, which has had a
similar problem.

4 years agolib/locale.t: Mark a test problematic
Karl Williamson [Sat, 28 Apr 2018 16:16:08 +0000 (10:16 -0600)]
lib/locale.t: Mark a test problematic

We now have found a system that fails this test.  Tests that are listed
as problematic automatically get marked as TODO when they fail with
specified platforms.  The next commit will specify the platform that
this is fails on.

4 years agot/run/locale.t: Skip some Solaris locales
Karl Williamson [Thu, 19 Apr 2018 20:43:43 +0000 (14:43 -0600)]
t/run/locale.t: Skip some Solaris locales

Solaris is buggy in dealing with locales that have a multi-byte UTF-8
decimal radix character.  Skip using these, like we do on cygwin, which
has a similar problem.

4 years agogetcwd() doesn't fail on non-existent directories on DragonFly BSD.
Tomasz Konojacki [Sun, 22 Apr 2018 21:49:59 +0000 (23:49 +0200)]
getcwd() doesn't fail on non-existent directories on DragonFly BSD.

Until it's fixed upstream, we should skip tests that don't expect
this behaviour.

[RT #133141]

4 years agoPATCH: [perl #133136] bisect runner
Karl Williamson [Wed, 25 Apr 2018 22:28:37 +0000 (16:28 -0600)]
PATCH: [perl #133136] bisect runner

bisect runner is supposed to keep going if the particular revision being
tested fails to compile.  But it wasn't.

Nicholas graciously diagnosed the problem.  When the enhancement for
testing when a module got broken, the code to do so was placed before
the check to see if the build for this revision crashed.  It's simply a
matter of moving that module code to after that check.

4 years agoutf8.c: use TRUE not true
Daniel Dragan [Sat, 28 Apr 2018 01:09:49 +0000 (21:09 -0400)]
utf8.c: use TRUE not true

"true" token was added in commit 394d2d3f37 but "true" is C++ and C99,
"TRUE" is portable perl API

Win32 VC 2003 C mode (C89) build faiure
..\utf8.c(6177) : error C2065: 'true' : undeclared identifier

4 years agoFinally fix C++ build with VS2017
Steve Hay [Sat, 28 Apr 2018 12:56:05 +0000 (13:56 +0100)]
Finally fix C++ build with VS2017

Dodge the "offsetof has a builtin meaning; use /Zc:offsetof- to revert to
old, non-conforming definition" error when compiling Socket.xs by reverting
to an old definition of STRUCT_OFFSET for that compiler.

4 years ago[MERGE] temporarily revert weak in-place sort fix
David Mitchell [Fri, 27 Apr 2018 09:35:09 +0000 (10:35 +0100)]
[MERGE] temporarily revert weak in-place sort fix

4 years agoRevert "Strengthen weak refs when sorting in-place"
David Mitchell [Thu, 26 Apr 2018 10:46:22 +0000 (11:46 +0100)]
Revert "Strengthen weak refs when sorting in-place"

This reverts commit f6107ca24b4cf22dcf7fd69d65612ad718c48fca.

See RT #132142.

For now, re-introduce the bug that fails to convert weak refs to strong
refs when sorting in place.

This is commit 2 of 2.

4 years agoRevert "Unweaken refs in in-place reverse"
David Mitchell [Thu, 26 Apr 2018 10:42:54 +0000 (11:42 +0100)]
Revert "Unweaken refs in in-place reverse"

This reverts commit 5bad3c4f3a4515aaa622eecdf6f5a84fcaff7ed9.

See RT #132142.

For now, re-introduce the bug that fails to convert weak refs to strong
refs when sorting in place.

This is commit 1 of 2.

4 years ago(perl #133030) make utime() available only if we have both fd and name setting
Tony Cook [Thu, 12 Apr 2018 11:11:12 +0000 (21:11 +1000)]
(perl #133030) make utime() available only if we have both fd and name setting

4 years agofix linkage of PL_inf/nan under C++
David Mitchell [Tue, 24 Apr 2018 14:07:51 +0000 (15:07 +0100)]
fix linkage of PL_inf/nan under C++

RT #132955

Commit 0879cd66ef3f00  fixed perl to still build under C++ after changes
to PL_inf and PL_nan. Unfortunately this seems to have broken C++ builds
under Windows.

Handle the extern 'C'  stuff in a different way - as suggested by Leon T -
that hopefully satisfies all platforms.

4 years agofixup for NO_TAINT_SUPPORT
Yves Orton [Tue, 24 Apr 2018 10:45:29 +0000 (12:45 +0200)]

4 years agoMake gets() declaration extern "C"
Steve Hay [Mon, 23 Apr 2018 12:53:55 +0000 (13:53 +0100)]
Make gets() declaration extern "C"

This, together with the previous commit, fixes the C++-mode build on
Windows using VS2017 except for the remaining problem with PL_nan when
linking POSIX - see RT#132955.

4 years agoMake PERLIO_FILE_file() an lvalue
Leon Timmermans [Thu, 19 Apr 2018 17:05:35 +0000 (19:05 +0200)]
Make PERLIO_FILE_file() an lvalue

4 years agoremove Storable::__Storable__ from Module::CoreList
Karen Etheridge [Sat, 21 Apr 2018 10:42:03 +0000 (12:42 +0200)]
remove Storable::__Storable__ from Module::CoreList

It was mistakenly picked up starting in 5.27.6 due to ad2ec6b54c and we
didn't notice: it should have never been added. Remove historical entries
and blacklist it so it doesn't come back.

4 years ago#133125 revise -DNO_MATHOM logic again in
Daniel Dragan [Fri, 20 Apr 2018 14:46:39 +0000 (10:46 -0400)]
#133125 revise -DNO_MATHOM logic again in

Revision of patch in #133098.

There is a problem described in #133125 with XS-APITest using with "Perl_"
mathomed C symbols instead of the Perl_-less ones which would get
preprocessor redirected to newer C funcs, then link failure of XS-APITest
on Win32 because missing symbols. These symbols were missing because they
were marked "m" and I thought in commit 1545ba5b04 "m" means no C symbol,
ever, but that isn't true. It seems that "b" means must export on a
with-mathoms default perl. So put back part of the original code before
commit 1545ba5b04 from commit 3f1866a8f6, so that on with mathoms builds
all "b"s are exported, but on no mathom builds, all "b"s are removed/not

There are some logic holes here for strange or impossible combinations
of flags, like flags "Abi" or just "b" without "A", that I wont address

4 years agoRT#133131: pp_hot.c: deoptimise pp_iter() when non-standard OP_AND op_ppaddr
Aaron Crane [Fri, 20 Apr 2018 15:45:04 +0000 (17:45 +0200)]
RT#133131: pp_hot.c: deoptimise pp_iter() when non-standard OP_AND op_ppaddr

Commit 7c114860c0fa8ade5e00a4b609d2fbd11d5a494c introduced an optimisation
in pp_iter(). Before the optimisation, pp_iter() pushed either &PL_SV_yes or
&PL_sv_no to the stack, and returned the op_next in the obvious way.

The optimisation takes advantage of the fact that the op_next of an OP_ITER
always points to an OP_AND node, so pp_iter() now directly jumps to either
the op_next or the op_other of the OP_AND as appropriate.

The commit message for the optimisation also says this:

    It's possible that some weird optree-munging XS module may break this
    assumption. For now I've just added asserts that the next op is OP_AND
    with an op_ppaddr of Perl_pp_and; if that assertion fails, it may be
    necessary to convert pp_iter()s' asserts into conditional statements.

However, Devel::Cover does change the op_ppaddr of the ops it can see, so
the assertions on op_ppaddr were being tripped when Devel::Cover was run
under a -DDEBUGGING Perl. But even if the asserts didn't trip, skipping the
OP_AND nodes would prevent Devel::Cover from determining branch coverage in
the way that it wants.

This commit converts the asserts into conditional statements, as outlined in
the commit message above, and undoes the optimisation when the op_ppaddr
doesn't match.

4 years agoAdapt to perl being in its fourth decade
Leon Timmermans [Sat, 21 Apr 2018 10:16:29 +0000 (12:16 +0200)]
Adapt to perl being in its fourth decade

4 years agoAdd announcement URL
Sawyer X [Sat, 21 Apr 2018 08:30:07 +0000 (10:30 +0200)]
Add announcement URL

4 years agoUpdate Module::CoreList for 5.28.0, I hope correctly
Sawyer X [Sat, 21 Apr 2018 07:53:35 +0000 (09:53 +0200)]
Update Module::CoreList for 5.28.0, I hope correctly

4 years agoNow META.json finally works
Sawyer X [Fri, 20 Apr 2018 21:01:01 +0000 (23:01 +0200)]
Now META.json finally works

4 years agoRegen, again
Sawyer X [Fri, 20 Apr 2018 20:57:13 +0000 (22:57 +0200)]
Regen, again

4 years agoFix Module::CoreList versions
Sawyer X [Fri, 20 Apr 2018 20:57:08 +0000 (22:57 +0200)]
Fix Module::CoreList versions

4 years agonew perldelta for 5.27.12 or 5.28.0
Sawyer X [Fri, 20 Apr 2018 15:37:46 +0000 (17:37 +0200)]
new perldelta for 5.27.12 or 5.28.0

4 years agoFix Storable indexing issue with PAUSE
Chris 'BinGOs' Williams [Fri, 20 Apr 2018 17:07:00 +0000 (18:07 +0100)]
Fix Storable indexing issue with PAUSE

4 years agoTick off release
Sawyer X [Fri, 20 Apr 2018 15:31:50 +0000 (17:31 +0200)]
Tick off release

4 years agoUpgrade paragraph:
Sawyer X [Fri, 20 Apr 2018 15:30:13 +0000 (17:30 +0200)]
Upgrade paragraph:

I'll put the link once I see the ID.

4 years agoAdd new release to perlhist v5.27.11
Sawyer X [Fri, 20 Apr 2018 13:32:49 +0000 (15:32 +0200)]
Add new release to perlhist

4 years agoFinalizing perldelta
Sawyer X [Fri, 20 Apr 2018 12:05:59 +0000 (14:05 +0200)]
Finalizing perldelta

4 years agoUpdate Module::CoreList for 5.27.11
Sawyer X [Fri, 20 Apr 2018 11:22:50 +0000 (13:22 +0200)]
Update Module::CoreList for 5.27.11

4 years agoDocument that `use v5.12` and `use feature ":5.12"` differ
Aaron Crane [Fri, 20 Apr 2018 12:28:35 +0000 (14:28 +0200)]
Document that `use v5.12` and `use feature ":5.12"` differ

4 years agoChange in the house of flies
Chris 'BinGOs' Williams [Fri, 20 Apr 2018 11:18:15 +0000 (12:18 +0100)]
Change in the house of flies

4 years agoBump Module-CoreList so is higher than version on CPAN
Chris 'BinGOs' Williams [Fri, 20 Apr 2018 11:13:14 +0000 (12:13 +0100)]
Bump Module-CoreList so is higher than version on CPAN

4 years agoAdd ppport.h to IO
Dagfinn Ilmari Mannsåker [Fri, 20 Apr 2018 09:12:31 +0000 (11:12 +0200)]
Add ppport.h to IO

4 years agoMerge branch 'bring unicode properties into core' into blead
Karl Williamson [Fri, 20 Apr 2018 07:12:22 +0000 (01:12 -0600)]
Merge branch 'bring unicode properties into core' into blead

Most \p{} constructs will now use inversion lists compiled into core.
This significantly lowers the start up cost of using Unicode properties.
The theory is that the properties not used will stay paged out by the
operating system.

Certain constructs continue to use the old mechanism.  The design here
is that if a property is not found, the old mechanism is used as a
fail safe.  In particular,

1) if the property name is invalid, this new system won't find it, and
   the old system will be invoked, and also won't find it, and the
   compilation will abort.

2) This new system does not handle user-defined properties, so the old
   mechanism will be used for those

3) In the numeric_value property (nv), if the input is not in canonical
   form, this new mechanism won't find it, and the old system will be
   used.  "3/4" is in canonical form, so the new system will be used;
   but "6/8" and 0.75 are not, so the old system will be used.

4 years agoperldelta for this moving uniprops to core
Karl Williamson [Fri, 20 Apr 2018 07:07:41 +0000 (01:07 -0600)]
perldelta for this moving uniprops to core

4 years agoregen/ Omit #defines
Karl Williamson [Fri, 20 Apr 2018 06:21:46 +0000 (00:21 -0600)]
regen/ Omit #defines is somewhat more flexible than Devel::Tokenizer::C, and so we can
avoid a bunch of #defines, and use the desired value directly.

4 years agoUse a perfect hash for Unicode property lookups
Karl Williamson [Fri, 20 Apr 2018 05:16:33 +0000 (23:16 -0600)]
Use a perfect hash for Unicode property lookups

The previous commits in this series have been preparing to allow the
Devel::Tokenizer::C code to be swapped out for the much smaller perfect
hash code.

4 years agoregen/ Add comments to gen'd file
Karl Williamson [Fri, 20 Apr 2018 05:51:32 +0000 (23:51 -0600)]
regen/ Add comments to gen'd file

This adds a comment showing for each rule what the input is for it.

4 years agoregen/ Split function into two
Karl Williamson [Thu, 19 Apr 2018 14:58:22 +0000 (08:58 -0600)]
regen/ Split function into two

Instead of directly printing as it goes along, a new function generates
the text to print, and the print function is refactored to be a wrapper
that calls that function and prints.

This is in preparation for that text to be printed outside

4 years agoregen/ Move a print around
Karl Williamson [Thu, 19 Apr 2018 14:56:00 +0000 (08:56 -0600)]
regen/ Move a print around

This needs to be placed elsewhere so it is always output, in preparation
for the next commits when not everything gets generated

4 years agoregen/ Use U16, etc, not uint16_t etc
Karl Williamson [Thu, 19 Apr 2018 14:36:52 +0000 (08:36 -0600)]
regen/ Use U16, etc, not uint16_t etc

Use the perl type names

4 years agoAdd regen/ for generating a perfect hash
Yves Orton [Thu, 19 Apr 2018 04:04:53 +0000 (22:04 -0600)]
Add regen/ for generating a perfect hash

This is copied unchanged from github,

where it is more of a stand-alone program.  Later commits will customize
it for perl use.

4 years agoBring all Unicode property definitions into core
Karl Williamson [Fri, 20 Apr 2018 03:08:24 +0000 (21:08 -0600)]
Bring all Unicode property definitions into core

This commit causes the looking up of \p{} Unicode properties to be done
without having to use the swash mechanism.s, with certain exceptions.
This will all be explained in the merge commit.

This commit uses Devel::Tokenizer::C to generate the code that turns the
property string as keywords into numbers that can be understood by the
computer.  This mechanism generates relatively large code.  The next
commits will replace this with a smaller mechanism.

4 years agoSet up initial \p{} parse function.
Karl Williamson [Wed, 11 Apr 2018 19:05:08 +0000 (13:05 -0600)]
Set up initial \p{} parse function.

This function will parse the interior of \p{} Unicode property names in
regular expression patterns.

The design of this function will be to return NULL on the properties it
cannot handle; otherwise it returns  an inversion list representing the
property it did find.  The current mechanism will be used to handle the
cases where this function returns NULL.

This initial state is just to have the function return NULL always, so
the existing mechanism is always used.  A later commit will add
the functionality in 5.28 that bypasses the existing mechanism.

4 years agoregen/ Keep core tables adjacent
Karl Williamson [Fri, 20 Apr 2018 02:52:24 +0000 (20:52 -0600)]
regen/ Keep core tables adjacent

The expectation is that most of the Unicode tables won't be used in any
given run, and since they reside in the text segment, won't get paged
in.  But that's not true of the tables used by the perl core.  So make
them adjacent so that paging one in will get some of the others.

4 years agoGenerate all binary Unicode property tables
Karl Williamson [Fri, 20 Apr 2018 02:06:27 +0000 (20:06 -0600)]
Generate all binary Unicode property tables

This is in preparation for future commits.  All the tables are
generated, but the newly generated ones remain unused by the core.  The
tables also are renamed to have a prefix 'PL_' in front of them, and
some casing changes.  The code that explicitly mentions to generate the
current tables is removed, so that these are part of the grander scheme
of things.

4 years agoregen/ Use one table if applies everywhere
Karl Williamson [Fri, 20 Apr 2018 01:43:18 +0000 (19:43 -0600)]
regen/ Use one table if applies everywhere

If a table is the same under all EBCDIC code pages and ASCII, only one
copy need be output, instead of one for each page.  This happens if the
table either includes the entire range of native code points (0-255) or
has no native code points.

At this commit, only \p{Assigned} falls into this category.

4 years agoregen/ White space only
Karl Williamson [Fri, 20 Apr 2018 01:13:25 +0000 (19:13 -0600)]
regen/ White space only

This outdents a for loop initialization section that previously was

4 years agoregen/ Reverse order of table vs EBCDIC
Karl Williamson [Fri, 20 Apr 2018 00:02:30 +0000 (18:02 -0600)]
regen/ Reverse order of table vs EBCDIC

This changes the order of the loops so that the outer one is the table,
and the inner one is the codeset.  This means that the different tables
for each codeset are together.

This prepares the way for the next commit

4 years agoregen/ Extract code into subs
Karl Williamson [Thu, 19 Apr 2018 23:06:39 +0000 (17:06 -0600)]
regen/ Extract code into subs

This is in preparation for it to be used in more places

4 years agoregen/ Move some code around
Karl Williamson [Thu, 19 Apr 2018 22:34:04 +0000 (16:34 -0600)]
regen/ Move some code around

This moves the switching of #if's to be adjacent to the area it is used

4 years agoregen/ Move some code around
Karl Williamson [Thu, 19 Apr 2018 17:04:37 +0000 (11:04 -0600)]
regen/ Move some code around

This is in preparation for a future commit

4 years agoregen/ Better handle preprocessor directives
Karl Williamson [Thu, 19 Apr 2018 16:29:28 +0000 (10:29 -0600)]
regen/ Better handle preprocessor directives

Prior to this patch it was possible for the code to get confused about
what to do when an #ifdef had multiple conditions

4 years agoMove inversion lists to utf8.c
Karl Williamson [Mon, 9 Apr 2018 16:43:06 +0000 (10:43 -0600)]
Move inversion lists to utf8.c

These previously were statics in perl.c.  A future commit would need
access to these from regcomp.c.  We could create an access function in
perl.c so that regcomp.c could access them, or we could move them to
regcomp.c.  But doing that means also they would be statics in
re_comp.c, and that would mean two copies.

So that means an access function is needed.  Their use is really
unrelated to perl.c, which merely initializes them, so that could have
an access function instead.  But the most logical place for their home
is utf8.c, which is described as for Unicode things, not just UTF-8

So this commit moves these inversion lists to utf8.c, and creates an
initialization function called on perl startup from perl.c

4 years agoUpdate IO ChangeLog since last public release to CPAN
Todd Rinaldo [Thu, 19 Apr 2018 20:36:11 +0000 (15:36 -0500)]
Update IO ChangeLog since last public release to CPAN

4 years agoRemove pre-5.8 logic no longer relevant in IO unit tests
Todd Rinaldo [Thu, 19 Apr 2018 20:32:55 +0000 (15:32 -0500)]
Remove pre-5.8 logic no longer relevant in IO unit tests

4 years agoBump all IO modules to 1.39 and set required Perl to 5.8.1
Todd Rinaldo [Thu, 19 Apr 2018 19:54:52 +0000 (14:54 -0500)]
Bump all IO modules to 1.39 and set required Perl to 5.8.1

Even with ppport.h, providing a dual life IO that supports 5.6.2 is impractical.
Given the toolchain policy of 5.8.1, we don't think this is a significant change

4 years agoRT#132744: clarify subs/vars documentation
Aaron Crane [Thu, 19 Apr 2018 17:55:11 +0000 (19:55 +0200)]
RT#132744: clarify subs/vars documentation

That ticket points out that mentions using declared sub names
"without parentheses". That is indeed misleading; using the term "list
operators" would be better.

While changing that, I've also tweaked the wording about lexical scopes and
the inability to rescind these declarations, and ensured that the
has the same revised text.

4 years agoperlapio: fix another out-of-date count of I/O implementations
Aaron Crane [Thu, 19 Apr 2018 17:39:31 +0000 (19:39 +0200)]
perlapio: fix another out-of-date count of I/O implementations

4 years agoperlfunc: clarify that keys/values reset the iterator first
Aaron Crane [Thu, 19 Apr 2018 17:37:23 +0000 (19:37 +0200)]
perlfunc: clarify that keys/values reset the iterator first

4 years agoperlfunc: clarify why next/last/redo don't affect sub{} et al
Aaron Crane [Thu, 19 Apr 2018 17:32:48 +0000 (19:32 +0200)]
perlfunc: clarify why next/last/redo don't affect sub{} et al

4 years agoop.c: fix weird indentation
Aaron Crane [Thu, 19 Apr 2018 17:30:50 +0000 (19:30 +0200)]
op.c: fix weird indentation

This is a remnant of an edit made in 230834321e308444d408bdbf755d181b67e82d4c

4 years agoPATCH: [perl #133121] Fix crash in gv_fetchmeth_sv
Sergey Aleynikov [Thu, 19 Apr 2018 00:44:46 +0000 (03:44 +0300)]
PATCH: [perl #133121] Fix crash in gv_fetchmeth_sv

S_gv_fetchmeth_internal supports its arguments being either an SV or
a (name, len) pair. But when performing an ISA traversal to get method from
a parent class, it accounted only for the latter.

4 years agoAdd HAS_STRTOD_L to metaconfig.h and rebuild Configure
Aaron Crane [Thu, 19 Apr 2018 16:13:46 +0000 (18:13 +0200)]
Add HAS_STRTOD_L to metaconfig.h and rebuild Configure

4 years agoPATCH: [perl #131670] Document Wide char msg better
Karl Williamson [Tue, 3 Apr 2018 17:30:16 +0000 (11:30 -0600)]
PATCH: [perl #131670] Document Wide char msg better

4 years agoRebuild Configure using metaconfig langinfo change
Aaron Crane [Thu, 19 Apr 2018 13:38:17 +0000 (15:38 +0200)]
Rebuild Configure using metaconfig langinfo change

We are now in sync with perl5-metaconfig/metaconfig@2d3a3017b8d44d778ed765d529ca114924b3ee14

4 years agoRebuild Configure from latest units
Aaron Crane [Thu, 19 Apr 2018 13:07:16 +0000 (15:07 +0200)]
Rebuild Configure from latest units

Most of the change here comes from a single unit being moved in the
generated Configure, but there are some substantive changes:

- config_h.SH was missing HAS_DUPLOCALE and d_duplocale
- d_duplocale was also missing from the platform-specific config-var files

This still doesn't quite ensure that rebuilding Configure makes no changes,
because there are differences to nl_langinfo() handling that need a change
in our metaconfig units. That will come next.

4 years agoEncode: truncated_utf8.t TODO passes
David Mitchell [Thu, 19 Apr 2018 13:10:35 +0000 (14:10 +0100)]
Encode: truncated_utf8.t TODO passes

This TODO test has been passing since the combination of:


    which added utf8n_to_uvchr_msgs to the perl API


    which upgraded blead to Encode  2.96, which makes use of this new
    function if available.

So stop marking it as TODO in blead.

This is patching a cpan/ distribution, but its only a test, and its a
bit late in code freeze to install a newer Encode released, while we
don't want a production perl with spurious passing TODO tests.

4 years agoSpelling corrections in pod/*.pod from Alexandr Savca.
Alexandr Savca [Wed, 18 Apr 2018 20:28:00 +0000 (16:28 -0400)]
Spelling corrections in pod/*.pod from Alexandr Savca.

Alexandr Savca is now a Perl AUTHOR.

For: RT #133120

Committer: holding off on the corrections to pod/perlartistic.pod until
clarification of change to license text.

4 years ago[MERGE] Documentation tweaks in I18N::Langinfo
Aaron Crane [Thu, 19 Apr 2018 12:08:18 +0000 (14:08 +0200)]
[MERGE] Documentation tweaks in I18N::Langinfo

4 years agoI18N::Langinfo: add a POD link
Aaron Crane [Thu, 19 Apr 2018 12:00:35 +0000 (14:00 +0200)]
I18N::Langinfo: add a POD link

4 years agoI18N::Langinfo: reword list items
Aaron Crane [Thu, 19 Apr 2018 11:55:30 +0000 (13:55 +0200)]
I18N::Langinfo: reword list items

4 years agoI18N::Langinfo: clarify POD with a list
Aaron Crane [Thu, 19 Apr 2018 11:51:49 +0000 (13:51 +0200)]
I18N::Langinfo: clarify POD with a list

4 years agoI18N::Langinfo: fix POD typo
Aaron Crane [Thu, 19 Apr 2018 09:35:13 +0000 (11:35 +0200)]
I18N::Langinfo: fix POD typo

4 years agoperldiag: Add diagnostic
Karl Williamson [Thu, 19 Apr 2018 03:55:16 +0000 (21:55 -0600)]
perldiag: Add diagnostic

This diagnostic already gets emitted, but was not in perldiag.  It was
not caught by the tests for such omissions, as it is currently generated
by a perl program (called from the core)

4 years agot/run/locale.t: Silence perl warning
Karl Williamson [Wed, 18 Apr 2018 23:44:04 +0000 (17:44 -0600)]
t/run/locale.t: Silence perl warning

This pattern that contains [:ascii:] is executed under /l, and can raise
"wide character" warnings when matched against a UTF-8 string.  But we
really are interested in strict ASCII, so /u works perfectly and avoids
any such warnings.

4 years agolocale.c: Reorder some debugging statements
Karl Williamson [Wed, 18 Apr 2018 16:01:34 +0000 (10:01 -0600)]
locale.c: Reorder some debugging statements

I found these confusing trying to debug a field problem.  This reorders
them, adjusting the wording slightly to compensate

4 years agoBump version to 0.25.
Nicholas Clark [Wed, 18 Apr 2018 05:49:31 +0000 (07:49 +0200)]
Bump version to 0.25.

This release contains only the 1 byte fix for perl RT #132974
The Changes file is still incomplete (see cpan RT #122854)

4 years agoExtUtils::Constant fix "panic: failed to extend arg stack"
Daniel Dragan [Wed, 14 Mar 2018 03:38:23 +0000 (23:38 -0400)]
ExtUtils::Constant fix "panic: failed to extend arg stack"

"$XS_Constant{$type}" is almost always a 2nd PUSH on stack, but EU::C
only extended by 1, not 2. This mistake didn't become visible until
the panic assert was added 5.27.2

panic: XSUB Compress::Raw::Bzip2::constant (Bzip2.c) failed to extend arg
stack: base=1b13010, sp=1b13020, hwm=1b13018

Numbers in message are from my 64bit perl, so 0x1b13020-0x1b13018=0x8
which is one 64 bit pointer stack slot, which is exactly the mistake that
this patch fixes in EU::C. See RT ticket associated with this commit for

4 years agoBump version to 0.24_50.
Nicholas Clark [Fri, 23 Jun 2017 15:06:25 +0000 (17:06 +0200)]
Bump version to 0.24_50.

4 years agot/run/locale.t; Suppress wide char warnings
Karl Williamson [Tue, 17 Apr 2018 19:53:25 +0000 (13:53 -0600)]
t/run/locale.t; Suppress wide char warnings

If there is an error, the characters involved are simply printed from
within fresh_perl.  It those characters are wide, we also get Wide char
warnings, which clouds the issue.

4 years agoPATCH [perl #132164] regcomp.c: Don't try to increment infinity
Karl Williamson [Sun, 1 Apr 2018 19:58:47 +0000 (13:58 -0600)]
PATCH [perl #132164] regcomp.c: Don't try to increment infinity

This value can be infinity (which is here SSize_t_MAX).  Leave it there.

4 years agoFixes found by coverity
Karl Williamson [Thu, 5 Apr 2018 18:19:09 +0000 (12:19 -0600)]
Fixes found by coverity

I didn't get any feedback as to if this fixed the issues found by
coverity, but smoke tests didn't find any problem with it, and I believe
it does addess these issues, so with the freeze date upon us, I'm
committing it.

4 years agot/ Special case openbsd
Karl Williamson [Mon, 19 Mar 2018 15:11:24 +0000 (09:11 -0600)]
t/ Special case openbsd

The openbsd setlocale() doesn't behave at all like what one would expect
from that function.  The comments added in this commit give some

4 years agot/run/locale.t: Refactor to use done_testing()
Karl Williamson [Tue, 17 Apr 2018 18:06:53 +0000 (12:06 -0600)]
t/run/locale.t: Refactor to use done_testing()

Various platforms have different locale abilities.  It was getting
complicated to make sure the skip counts are valid for each combination.

4 years agot/run/locale.t: Add debugging code
Karl Williamson [Thu, 15 Feb 2018 04:25:41 +0000 (21:25 -0700)]
t/run/locale.t: Add debugging code

This has proved useful at times

4 years agore/regexp_unicode_prop.t: Add test
Karl Williamson [Sun, 8 Apr 2018 21:03:56 +0000 (15:03 -0600)]
re/regexp_unicode_prop.t: Add test

User-defined properties can have the same name as, and override an
official property definition.  This may or may not be the correct
behavior going forward, but it shouldn't be changed inadvertently.

4 years agomktables: Add tests for t/re/unipropsFOO
Karl Williamson [Sun, 8 Apr 2018 20:40:49 +0000 (14:40 -0600)]
mktables: Add tests for t/re/unipropsFOO

Make sure that a non-binary property doesn't get mistakenly matched in
\p{}, which is only for binary ones.  There are some ambiguities that
this test keeps us from falling victim to.

4 years agoregen/ Remove improper line
Karl Williamson [Fri, 6 Apr 2018 02:40:19 +0000 (20:40 -0600)]
regen/ Remove improper line

I don't know what this line was supposed to do, but it wasn't working.
This commit also uses DeMorgan's law to clarify, and makes sure that
before looking at an entry in an array, that the entry exists

4 years agoregcomp.c: Fix typo in comment
Karl Williamson [Tue, 17 Apr 2018 16:17:54 +0000 (10:17 -0600)]
regcomp.c: Fix typo in comment

4 years agot/re/reg_mesg.t: Add test for [perl #132055]
Karl Williamson [Tue, 17 Apr 2018 16:08:28 +0000 (10:08 -0600)]
t/re/reg_mesg.t: Add test for [perl #132055]

4 years agot/ Increase stack size on AIX
Karl Williamson [Tue, 17 Apr 2018 04:58:55 +0000 (22:58 -0600)]
t/ Increase stack size on AIX

This is starting to core dump.  I increased it arbitrarily by 50%.

4 years agoheap-buffer-overflow
Karl Williamson [Tue, 17 Apr 2018 04:13:30 +0000 (22:13 -0600)]

The fix is simpler than in the maintenance releases due to prior changes
in 5.27.

The problem is that under some circumstances the sharp s takes up two
bytes when space for only one had been allocated.  Just the right set of
circumstances are required for this to happen.

4 years agoRevert "PATCH: (perl #132227 CVE-2018-6797] heap-buffer-overflow"
Karl Williamson [Tue, 17 Apr 2018 03:12:03 +0000 (21:12 -0600)]
Revert "PATCH: (perl #132227 CVE-2018-6797] heap-buffer-overflow"

This reverts commit 2407a17ad5d780a1625dddfb668056ab05459194.

It turns out that I applied the wrong patch, which was a preliminary one
that did not solve the entire problem.  The next commit will apply a
correct fix, with test.

4 years agofix TRIE_READ_CHAR and DECL_TRIE_TYPE to account for non-utf8 target
Yves Orton [Tue, 13 Feb 2018 23:29:26 +0000 (10:29 +1100)]
fix TRIE_READ_CHAR and DECL_TRIE_TYPE to account for non-utf8 target

This is the third commit involved in [perl #132063, and the bottom line
cause of it.  The problem is that the code is incorrectly branching to a
portion of the code that expects it is handling UTF-8. And the input
isn't UTF-8.  The fix is to handle this case and branch correctly.  This
bug requires the following things in order to manifest:
    1) the pattern is compiled under /il
    2) the pattern does not contain any characters below 256
    3) the target string is not UTF-8.

(The committer changed the test to test this issue on EBCDIC, as the
original \xFF is an invariant there that wouldn't exercise the problem.
We want a start byte for a long UTF-8 sequence for a single character.
On the EBCDIC pages we support, \xFE fits that bill.

4 years agoSubject: PATCH: [perl #132063]: Heap buffer overflow
Karl Williamson [Tue, 6 Feb 2018 21:50:48 +0000 (14:50 -0700)]
Subject: PATCH: [perl #132063]: Heap buffer overflow

There were three things that were fixed as a result of this ticket, any
one of which would have avoided the issue.

Commit 421da25c4318861925129cd1b17263289db3443c already has fixed
one of those.  The issue was reading beyond the end of a buffer, and
that commit keeps from reading beyond a NUL, which normally should be
present, marking the end of the buffer.

This commit fixes the issue where the code was told that reading that
many bytes was ok to do.  This is several instances in regexec.c of the
code assuming that the input was valid UTF-8, whereas the input was too
short for what the start byte claimed it would be.

I grepped through the core for any other similar uses, and did not find

The next commit will fix the third thing.

4 years agofix SEGV in XS::APItest::Backrefs::Comctl32Version()
Daniel Dragan [Thu, 12 Apr 2018 18:53:09 +0000 (14:53 -0400)]
fix SEGV in XS::APItest::Backrefs::Comctl32Version()

really old Mingw GCCs (3.4.5 specifically) dont implement _alloca
correctly, switch to a simpler variation

a follow on to perl #133084 and see also problems I had with alloca on
very old GCCs in