This is a live mirror of the Perl 5 development currently hosted at
2 years agoregcomp.c: Change message into a panic
Karl Williamson [Mon, 26 Aug 2019 15:15:09 +0000 (09:15 -0600)]
regcomp.c: Change message into a panic

Because that's what is happening, and the next commit would otherwise
say we need to document this diagnostic, but it's one that the observer
can do nothing about except file a bug report

2 years agoregcomp.c: Move code within #ifdef
Karl Williamson [Mon, 26 Aug 2019 14:35:21 +0000 (08:35 -0600)]
regcomp.c: Move code within #ifdef

This code does nothing except an 'if' without acting on it, as a result
of an #ifdef within it, so might as well move the whole thing inside the

2 years agoutil.c: Correct spelling in rarely compiled code
Karl Williamson [Mon, 26 Aug 2019 04:14:52 +0000 (22:14 -0600)]
util.c: Correct spelling in rarely compiled code

On Z/OS, this does get compiled, and fails due to the missepllings.

2 years agoregen/ Fix /i rules for non-ASCII machines
Karl Williamson [Mon, 26 Aug 2019 00:49:02 +0000 (18:49 -0600)]
regen/ Fix /i rules for non-ASCII machines

Two variable weren't getting initialized properly in one code path, with
the result that the case folding tables were pretty much garbage, but
not on ASCII platforms.

2 years agoregen/ Never remap 0
Karl Williamson [Mon, 26 Aug 2019 00:41:44 +0000 (18:41 -0600)]
regen/ Never remap 0

0 is a special marker, and shouldn't be remapped.  It would be
unlikely to be so, but this makes sure.

2 years agoregen/ inversion map requires a final entry
Karl Williamson [Mon, 26 Aug 2019 00:21:54 +0000 (18:21 -0600)]
regen/ inversion map requires a final entry

Inversion maps are supposed to have an entry for what to do above the
Unicode range.  This subroutine crafts a custom map that was missing

2 years agoregcomp.c: Use macro to remove some #ifdef EBCDIC lines
Karl Williamson [Mon, 26 Aug 2019 00:19:02 +0000 (18:19 -0600)]
regcomp.c: Use macro to remove some #ifdef EBCDIC lines

2 years agoregcomp.c: Some code paths didn't terminate an inversion list iteration
Karl Williamson [Mon, 26 Aug 2019 00:13:07 +0000 (18:13 -0600)]
regcomp.c: Some code paths didn't terminate an inversion list iteration

There were a couple paths through the code that failed to call
invlist_iterfinish().  This was a bug everywhere, but prevented z/OS
from completely compiling.

2 years agocompile perl with -O2 on DragonFly BSD
Tomasz Konojacki [Sun, 18 Aug 2019 02:54:53 +0000 (04:54 +0200)]
compile perl with -O2 on DragonFly BSD

[perl #134372]

2 years agoChange "--sysroot X" to "--sysroot=X" in Configure
Hauke D [Tue, 13 Aug 2019 20:05:47 +0000 (22:05 +0200)]
Change "--sysroot X" to "--sysroot=X" in Configure

2 years agoperldelta for 14d26b44a1d7
Tony Cook [Mon, 26 Aug 2019 00:27:10 +0000 (10:27 +1000)]
perldelta for 14d26b44a1d7

2 years ago(perl #134230) don't interpret 0x, 0b when numifying strings
Tony Cook [Tue, 20 Aug 2019 05:43:05 +0000 (15:43 +1000)]
(perl #134230) don't interpret 0x, 0b when numifying strings

2 years agoMake find.t work on VMS by trimming trailing dots.
Craig A. Berry [Sun, 25 Aug 2019 19:26:11 +0000 (14:26 -0500)]
Make find.t work on VMS by trimming trailing dots.

For whatever reason, find.t uses a lot of filenames with no
extension for testing purposes, but on VMS there is no such thing
as a file with no extension, so, for example 'faba' is returned
as 'faba.' with the zero-length extension explicitly specified.

For comparison purposes we have to trim that trailing dot, and
there is code to do that sprinkled throughout the test; we just
hadn't (until now) added it for a couple of the more recent tests.

2 years agoPrepare VMS linker GSMATCH for 5.32.
Craig A. Berry [Sun, 25 Aug 2019 18:50:46 +0000 (13:50 -0500)]
Prepare VMS linker GSMATCH for 5.32.

GSMATCH in the linker options file tells the image activator
whether a dynamic library being loaded is compatible with what it
originally linked against.  Ideally we would like to encode the
version number and all the options that can make a build binary
incompatible with another build of the same version, but there
are about 30 such options and only 8 bits (on Alpha) in which to
store both the version number and the options.

We've lived with only 3 bits reserved for 3 options, but as of
version 32 of Perl 5, we'll need 6 bits for the version number:

    $ perl -e "$v = 31; printf('%b', $v);"
    $ perl -e "$v = 32; printf('%b', $v);"

leaving us only 2 bits for options.

The code modified here only kicks in when PERLSHR_USE_GSMATCH is
defined in the environment.

2 years agoPATCH: [perl #134133] read beyond end of buffer
Karl Williamson [Fri, 24 May 2019 15:01:46 +0000 (09:01 -0600)]
PATCH: [perl #134133] read beyond end of buffer

The code was using the wrong limit variable.

2 years agoregcomp.c: Fix wrong limit test
Karl Williamson [Thu, 22 Aug 2019 16:16:14 +0000 (10:16 -0600)]
regcomp.c: Fix wrong limit test

Spotted by Hugo van der Sanden in code reading.

2 years agouni_keywords.h: Fix to work on EBCDIC
Karl Williamson [Wed, 21 Aug 2019 18:52:23 +0000 (12:52 -0600)]
uni_keywords.h: Fix to work on EBCDIC

The table is collated in ASCII, so convert to that when looking things

This change does not affect the binary of ASCII platform compilations

2 years agoinline.h: Return proper value on EBCDIC
Karl Williamson [Wed, 21 Aug 2019 15:14:05 +0000 (09:14 -0600)]
inline.h: Return proper value on EBCDIC

The final step was missing in the conversion from UTF-EBCDIC to uv.

This adds a macro call that expands to its argument on non-EBCDIC
platforms, so this commit makes no changes to the compiled binary on
those systems.

2 years agoReset xxx_convert to empty string if none of 3 utilities is found
James E Keenan [Sun, 18 Aug 2019 13:16:56 +0000 (13:16 +0000)]
Reset xxx_convert to empty string if none of 3 utilities is found

This will cause Configure to enter the WHOA block and default to using

Change Gconvert checkit() prototype for [perl #134371].

In the checkit() routine inside Configure, clang++ was taking the
if (strcmp(expect, got)) branch even though the 'expect' and 'got' strings
were identical.  A first step in debugging this was to realize that
the checkit() function never returned a value, so relabel it as void.
With clang version 7.0.1-8 (tags/RELEASE_701/final) (Debian),
this change seems to work around the strcmp issue.

Further Configure gconvert probe cleanups for C++.  As part of debugging
[perl #134375] and [perl #134371], try to eliminate warnings thrown by

2 years agoI18N::Langinfo: Add doc heading
Karl Williamson [Thu, 4 Jul 2019 17:49:14 +0000 (11:49 -0600)]
I18N::Langinfo: Add doc heading

This resolves

2 years agoBump version to 5.31.4 and update Module::Corelist
Tom Hukins [Tue, 20 Aug 2019 15:20:27 +0000 (16:20 +0100)]
Bump version to 5.31.4 and update Module::Corelist

2 years agoNew perldelta for 5.31.4
Tom Hukins [Tue, 20 Aug 2019 15:13:57 +0000 (16:13 +0100)]
New perldelta for 5.31.4

2 years agoTick off 5.31.3
Tom Hukins [Tue, 20 Aug 2019 15:05:57 +0000 (16:05 +0100)]
Tick off 5.31.3

2 years ago5.31.3 today v5.31.3
Tom Hukins [Tue, 20 Aug 2019 13:12:13 +0000 (13:12 +0000)]
5.31.3 today

2 years agoperldelta - module versions
Tom Hukins [Tue, 20 Aug 2019 11:37:32 +0000 (11:37 +0000)]
perldelta - module versions

2 years agoperldelta - acknowledgements
Tom Hukins [Tue, 20 Aug 2019 11:31:44 +0000 (11:31 +0000)]
perldelta - acknowledgements

2 years agoUpdate Module::CoreList for 5.31.3
Tom Hukins [Tue, 20 Aug 2019 11:28:07 +0000 (11:28 +0000)]
Update Module::CoreList for 5.31.3

2 years agoperldelta - remove boilerplate
Tom Hukins [Tue, 20 Aug 2019 11:22:19 +0000 (11:22 +0000)]
perldelta - remove boilerplate

2 years agoPerl_quadmath_format_single(): fix off-by-1 err
David Mitchell [Tue, 20 Aug 2019 12:03:58 +0000 (13:03 +0100)]
Perl_quadmath_format_single(): fix off-by-1 err

RT #134369

This function checks that a floating format string (%f, %e etc) on
-Dusequadmath builds has the 'Q' qualifier , and if not adds it.

However, the "adding" code  allocates a new buffer that is one byte too
short, which this commit fixes.

In practice it doesn't matter, as in core, this function is only ever
called when the 'Q' is already present.

2 years agoperldelta for 442d4b523eda1 (opslot)
David Mitchell [Tue, 20 Aug 2019 07:43:48 +0000 (08:43 +0100)]
perldelta for 442d4b523eda1 (opslot)

2 years agoFix utf8_to_uvchr_buf to match docs
Karl Williamson [Mon, 19 Aug 2019 20:43:30 +0000 (14:43 -0600)]
Fix utf8_to_uvchr_buf to match docs

It did so already except when passed a zero length input on
non-debugging builds.  This caused test failures in Devel::PPPort, and
commit 4a5ab54a18679ab24ca03190884d326c2ca85288 was used to customize
that module in blead to get the tests to pass.

This commit avoids the possibility of having to bump the version again,
which is what that commit did.

2 years agoperldelta for ab7a3d991f6e4eb554d12bf4f083c352fe40452f
James E Keenan [Mon, 19 Aug 2019 21:36:36 +0000 (17:36 -0400)]
perldelta for ab7a3d991f6e4eb554d12bf4f083c352fe40452f

2 years agoUpdate Test-Simple to CPAN version 1.302166
Chad Granum [Mon, 19 Aug 2019 21:32:29 +0000 (17:32 -0400)]
Update Test-Simple to CPAN version 1.302166

1.302166  2019-08-15 10:37:01-07:00 America/Los_Angeles

    - Fix context test on older perls

1.302165  2019-08-15 10:21:09-07:00 America/Los_Angeles

    - Better diagnostics when a context is destroyed unexpectedly
    - Add an event to notify when END phase starts

2 years agoutfebcdic.h: Fix EBCDIC compilation error
Karl Williamson [Mon, 19 Aug 2019 15:05:05 +0000 (09:05 -0600)]
utfebcdic.h: Fix EBCDIC compilation error

The #include needs to always be done, so remove the #ifdef.  The
included file has the proper setup anyway for the variables that were

2 years agoperldelta: Document I8N::LangTags noteworthy change
Karl Williamson [Mon, 19 Aug 2019 15:02:56 +0000 (09:02 -0600)]
perldelta: Document I8N::LangTags noteworthy change

2 years agoperldelta: Fix typo
Karl Williamson [Mon, 19 Aug 2019 15:02:23 +0000 (09:02 -0600)]
perldelta: Fix typo

2 years agoperldelta for 105c827d9a0f
Tony Cook [Mon, 19 Aug 2019 05:49:35 +0000 (15:49 +1000)]
perldelta for 105c827d9a0f

though if anyone has a better description, please update it

2 years ago(perl #124256) disallow \K in lookahead and lookbehind
Tony Cook [Thu, 28 Sep 2017 04:40:24 +0000 (14:40 +1000)]
(perl #124256) disallow \K in lookahead and lookbehind

\K can cause infinite loops in matching in these, and we're not sure
how it really should behave, so forbid it.

2 years agoRevert "Update Scalar-List-Utils to CPAN version 1.51"
Chris 'BinGOs' Williams [Sat, 17 Aug 2019 17:38:54 +0000 (18:38 +0100)]
Revert "Update Scalar-List-Utils to CPAN version 1.51"

This reverts commit 96684a73b5f81ca2a88309182dbc2dca9ab1601a.

Failures with uselongdouble

2 years agoUpdate release schdule, still missing some
Sawyer X [Sat, 17 Aug 2019 13:46:30 +0000 (16:46 +0300)]
Update release schdule, still missing some

2 years agoperldelta for merge commit 17154110146f
Tony Cook [Thu, 15 Aug 2019 04:24:44 +0000 (14:24 +1000)]
perldelta for merge commit 17154110146f

2 years agoCleanup Time::HiRes
Tony Cook [Thu, 15 Aug 2019 04:17:49 +0000 (14:17 +1000)]
Cleanup Time::HiRes

2 years agobump $Time::HiRes::VERSION
Tony Cook [Thu, 15 Aug 2019 04:16:19 +0000 (14:16 +1000)]
bump $Time::HiRes::VERSION

2 years agoTime::HiRes: remove workaround for an ancient Devel::PPPort bug
Tomasz Konojacki [Mon, 15 Jul 2019 23:42:07 +0000 (01:42 +0200)]
Time::HiRes: remove workaround for an ancient Devel::PPPort bug

It was fixed in Devel::PPPort 3.13_02.

[perl #134288]

2 years agoTime::HiRes: remove the remains of MacOS classic support
Tomasz Konojacki [Mon, 15 Jul 2019 21:44:08 +0000 (23:44 +0200)]
Time::HiRes: remove the remains of MacOS classic support

Perl dropped MacOS classic support ages ago.

[perl #134288]

2 years agoTime::HiRes: remove code for perls older than 5.6
Tomasz Konojacki [Mon, 15 Jul 2019 21:36:40 +0000 (23:36 +0200)]
Time::HiRes: remove code for perls older than 5.6

Both Makefile.PL and contain "use 5.006", so it was dead
code anyway.

[perl #134288]

2 years agoTime::HiRes: normalize indentation
Tomasz Konojacki [Mon, 15 Jul 2019 04:57:48 +0000 (06:57 +0200)]
Time::HiRes: normalize indentation

The indendation style now (roughly) matches what was specified
in the style guide in perlhack.

This commit doesn't contain any functional changes. If you're
seeing it in "git blame" output, try using -w switch, it will
hide whitespace-only changes.

[perl #134288]

2 years agoperldelta for 2f36de812bad297aa2393aee5b13ed2e3acd00e8
James E Keenan [Thu, 15 Aug 2019 00:57:44 +0000 (20:57 -0400)]
perldelta for 2f36de812bad297aa2393aee5b13ed2e3acd00e8

2 years agoGetopt::Long: sync with CPAN version 2.51
Johan Vromans [Thu, 15 Aug 2019 00:55:34 +0000 (20:55 -0400)]
Getopt::Long: sync with CPAN version 2.51

2 years agoPATCH: [perl #134357] embed.fnc missing flag for docs
Karl Williamson [Tue, 13 Aug 2019 01:14:30 +0000 (19:14 -0600)]
PATCH: [perl #134357] embed.fnc missing flag for docs

A check was recently added if a function had documentation that
embed.fnc accurately reflected that.  Commit
c1a02ccad9a1ea91206b97e66056ee354ac761c1 missed this function

2 years agoRun tests in ext/File-Find/t in series
James E Keenan [Wed, 7 Aug 2019 13:39:56 +0000 (09:39 -0400)]
Run tests in ext/File-Find/t in series

For: RT # 133771

2 years agoUpdate IO-Compress to CPAN version 2.087
Chris 'BinGOs' Williams [Mon, 12 Aug 2019 18:48:50 +0000 (19:48 +0100)]
Update IO-Compress to CPAN version 2.087


  2.087 10 August 2019

      * IO::Uncompress::Unzip
        nextStream not updating filehandle correctly

      * Added travis & appveyor files for CI in GitHub

2 years agoUpdate Compress-Raw-Bzip2 to CPAN version 2.087
Chris 'BinGOs' Williams [Mon, 12 Aug 2019 18:47:03 +0000 (19:47 +0100)]
Update Compress-Raw-Bzip2 to CPAN version 2.087


  2.087 10 August 2019

      * No Changes

2 years agoUpdate Compress-Raw-Zlib to CPAN version 2.087
Chris 'BinGOs' Williams [Mon, 12 Aug 2019 18:45:34 +0000 (19:45 +0100)]
Update Compress-Raw-Zlib to CPAN version 2.087


2.087 10 August 2019

      * clang warning in ppport.h
        update to latest ppport.h

2 years agoUpdate Scalar-List-Utils to CPAN version 1.51
Chris 'BinGOs' Williams [Mon, 12 Aug 2019 09:27:18 +0000 (10:27 +0100)]
Update Scalar-List-Utils to CPAN version 1.51


1.51 -- 2019-08-08 14:31:32
   * Add TO_JSON to List::Util::_Pair (thanks ilmari)
   * Various minor docs fixes

   * Don't segfault in subname() on deleted stashes (thanks ilmari)
   * Fix uniqnum for large floats and numeric strings (thanks ilmari)

2 years agoperlapi: Document isALNUMC and variants
Karl Williamson [Fri, 9 Aug 2019 17:01:45 +0000 (11:01 -0600)]
perlapi: Document isALNUMC and variants

2 years agoperlapi: my_sprintf is a Miscellaneous function
Karl Williamson [Mon, 5 Aug 2019 00:13:39 +0000 (18:13 -0600)]
perlapi: my_sprintf is a Miscellaneous function

2 years agoperlapi: sortsv_flags is an SV function
Karl Williamson [Mon, 5 Aug 2019 00:06:07 +0000 (18:06 -0600)]
perlapi: sortsv_flags is an SV function

2 years agoperlapi: save_gp is a GV function
Karl Williamson [Mon, 5 Aug 2019 00:03:57 +0000 (18:03 -0600)]
perlapi: save_gp is a GV function

2 years agoperlapi: Reword some isFOO char classification docs
Karl Williamson [Mon, 5 Aug 2019 03:00:36 +0000 (21:00 -0600)]
perlapi: Reword some isFOO char classification docs

The input to these isn't restricted to a byte, and some minor

2 years agoperlapi: 5.30 promise not met; change to 5.32
Karl Williamson [Sat, 3 Aug 2019 15:17:43 +0000 (09:17 -0600)]
perlapi: 5.30 promise not met; change to 5.32

We delayed this change, but I forgot to change this documentation

2 years agoregcomp.c: Don't read off the end of buffer
Karl Williamson [Thu, 27 Jun 2019 21:39:11 +0000 (15:39 -0600)]
regcomp.c: Don't read off the end of buffer

Until this commit, it was possible that \p{nv=3/} would cause the right
brace to be considered part of the property name.

Spotted by Hugo van der Sanden

2 years agofix size-miscalculation upgrading LISTOP TO LOOPOP
David Mitchell [Fri, 9 Aug 2019 10:11:19 +0000 (11:11 +0100)]
fix size-miscalculation upgrading LISTOP TO LOOPOP

RT #134344

My recent commit v5.31.2-54-g8c47b5bce7 broke some CAN modules because
the code in Perl_newFOROP() wasn't accounting for the overhead in the
opslot struct when deciding whether an allocated LISTOP was large enough
to be upgraded in-place to a LOOPOP.

2 years agoAPIify and document several interpreter variables
Tony Cook [Thu, 8 Aug 2019 05:56:58 +0000 (15:56 +1000)]
APIify and document several interpreter variables

2 years agoPERL_DESTRUCT_LEVEL no longer requires a -DDEBUGGING build
Tony Cook [Thu, 8 Aug 2019 05:53:31 +0000 (15:53 +1000)]
PERL_DESTRUCT_LEVEL no longer requires a -DDEBUGGING build

2 years ago(perl #132777) APIify and document PL_perl_destruct_level
Tony Cook [Thu, 31 Jan 2019 04:39:39 +0000 (15:39 +1100)]
(perl #132777) APIify and document PL_perl_destruct_level

This is documented in perlembed.  It's only rarely used on CPAN
but it's pretty basic.

2 years ago(perl #132777) document (sort of) and APIify PL_runops
Tony Cook [Thu, 31 Jan 2019 04:25:05 +0000 (15:25 +1100)]
(perl #132777) document (sort of) and APIify PL_runops

This is documented in perlguts in such a way that it appears be
effectively API, so APIify it.

It's used on CPAN in a small number of modules.

2 years ago(perl #132777) document and APIify PL_parser
Tony Cook [Thu, 31 Jan 2019 04:06:41 +0000 (15:06 +1100)]
(perl #132777) document and APIify PL_parser

Used in a few places on CPAN, either to check or modify the
compilation error count, or to do a little parsing via bufptr.

2 years ago(perl #132777) document and APIify PL_defgv
Tony Cook [Thu, 31 Jan 2019 03:52:14 +0000 (14:52 +1100)]
(perl #132777) document and APIify PL_defgv

This is used occasionally on CPAN, typically to access $_.

2 years ago(perl #132777) APIify and document PL_curstash
Tony Cook [Thu, 31 Jan 2019 03:35:52 +0000 (14:35 +1100)]
(perl #132777) APIify and document PL_curstash

per leont: I can't think of any reason not to make PL_curstash API,
it's both common, useful, simple, and highly unlikely to ever need

2 years ago(perl #132777) document and add PL_curcop to the API
Tony Cook [Thu, 31 Jan 2019 03:04:52 +0000 (14:04 +1100)]
(perl #132777) document and add PL_curcop to the API

PL_curcop is used fairly widely on CPAN, mostly to get the current
line number and file, to check lexical hints, or to check the

2 years ago(perl #132777) document PL_exit_flags
Tony Cook [Thu, 31 Jan 2019 02:37:44 +0000 (13:37 +1100)]
(perl #132777) document PL_exit_flags

PL_exit_flags is referred to in perlembed, perldiag and two
perldeltas, so APIify and document it.

2 years agoperldelta for 933e3e630076
Tony Cook [Thu, 8 Aug 2019 04:35:51 +0000 (14:35 +1000)]
perldelta for 933e3e630076

2 years ago(perl #134266) make sure $@ is writable when we write to it
Tony Cook [Mon, 5 Aug 2019 05:23:45 +0000 (15:23 +1000)]
(perl #134266) make sure $@ is writable when we write to it

when unwinding.

Since except_sv might be ERRSV we try to preserve it's value,
if not the actual SV (which we have an extra refcount on if it is

2 years agobump $Storable::VERSION and update ChangeLog
Tony Cook [Thu, 8 Aug 2019 01:58:23 +0000 (11:58 +1000)]
bump $Storable::VERSION and update ChangeLog

2 years agominimally document the stacksize tool
Tony Cook [Tue, 6 Aug 2019 00:54:25 +0000 (10:54 +1000)]
minimally document the stacksize tool

2 years agomove Storable CAN_FLOCK computation into XS
Graham Knop [Sat, 20 Apr 2019 10:53:06 +0000 (12:53 +0200)]
move Storable CAN_FLOCK computation into XS

At build time, Storable would check if it could use flock based on some
Config values, and generate the final file using tha value.
This was done to avoid needing to load Config at runtime.  This adds
complexity to the build process.

A simpler option is to build the constant in the XS code.  This means
the build process can be entirely standard for XS.

Some slight adjustments to the code are needed to load the XS module at
BEGIN time, so that the contant is available in the rest of the file.

2 years agoremove remains of Storable stack size detection
Graham Knop [Sat, 20 Apr 2019 10:44:52 +0000 (12:44 +0200)]
remove remains of Storable stack size detection

At build time, Storable used to detect the stack limits and store them.
This was removed in 2a0bbd31bbcc94c7c511f9575df619c5fdf3164c.  That
removed the Limit module and the setup for building it, but left behind
the script used to detect the limits.

Clean up the script and some related bits in the Makefile.PL.

TonyC: retain stacksize, so end users can use it to choose limits

2 years agoperldelta for d1bc97feec1a
Tony Cook [Thu, 8 Aug 2019 01:18:38 +0000 (11:18 +1000)]
perldelta for d1bc97feec1a

2 years ago(perl #133695) "0".."-1" should act like 0..-1
Hauke D [Fri, 30 Nov 2018 12:06:07 +0000 (13:06 +0100)]
(perl #133695) "0".."-1" should act like 0..-1

Previously, *any* string beginning with 0, including the string "0"
itself, would be subject to the magic string auto-increment, instead of
being treated like a number. This meant that "-2".."-1" was the same as
-2..-1 and "1".."-1" was the same as 1..-1, but "0".."-1" was the same
as "0".."99".

This patch fixes that inconsistency, while still allowing ranges like
"01".."31" to produce the strings "01", "02", ... "31", which is what
the "begins with 0" exception was intended for.

This patch also expands the documentation in perlop and states the rules
for the range operator in list context with both operands being strings
more explicitly.

See also #18165 and #18114.

2 years agobump $PerlIO::via::VERSION
Tony Cook [Thu, 8 Aug 2019 00:09:01 +0000 (10:09 +1000)]
bump $PerlIO::via::VERSION

2 years agoPerlIO::Via: check arg is non-NULL before using it.
Tony Cook [Wed, 7 Aug 2019 04:58:14 +0000 (14:58 +1000)]
PerlIO::Via: check arg is non-NULL before using it.

I can't find any code in core that ends up calling the _pushed handler
with arg == NULL, but PerlIO_push() is API, and there might be
CPAN or DarkPAN code out there that does, escpecially since there's
a check for arg being non-NULL further down.

CID 169261.

2 years agoStorable: make count large enough
Tony Cook [Wed, 7 Aug 2019 01:13:53 +0000 (11:13 +1000)]
Storable: make count large enough

AvARRAY() could be very large, and we check for that at line 3807,
but int was (potentially) too small to make that comparison

CID 174681.

2 years agolocale.c: Stop Coverity warning
Karl Williamson [Wed, 7 Aug 2019 03:29:22 +0000 (21:29 -0600)]
locale.c: Stop Coverity warning

Coverity is right, so re-order these clauses.  This code is executed
only if some very strange error occurs.

2 years agoRevert "Revert "postpone perl_parse() exit(0) bugfix""
Tony Cook [Wed, 7 Aug 2019 00:45:52 +0000 (10:45 +1000)]
Revert "Revert "postpone perl_parse() exit(0) bugfix""

This reverts commit 2773b4f50f991900e38d33daace2b9c6a0902c6a.

I haven't made much progress in resolving the problems this produces
downstream, so rather than leaving it broken, I'll revert it until
they can be solved.

2 years agoavoid use-after free in /(?{...})/
David Mitchell [Wed, 19 Jun 2019 12:03:22 +0000 (13:03 +0100)]
avoid use-after free in /(?{...})/

RT #134208

In something like

    eval { sub { " " }->() =~ /(?{ die })/ }

When the match string gets aliased to $_, the SAVE_DEFSV is done after the
SAVEDESTRUCTOR_X(S_cleanup_regmatch_info_aux).  So if croaking, the SV
gets SvREFCNT_dec()ed by the SAVE_DEFSV, then S_cleanup_regmatch_info_aux()
manipulates the SV's magic.

This doesn't cause a problem unless the match string is temporary, in
which case the only other reference keeping it alive will be removed
by the FREETMPs during the croak.

The fix is to make sure an extra ref to the sv is held.

2 years agoinclude a trailing \0 in SVs holding trie info
David Mitchell [Tue, 6 Aug 2019 13:36:45 +0000 (14:36 +0100)]
include a trailing \0 in SVs holding trie info

RT #13427

TRIE_STORE_REVCHAR() was creating SvPV()s with no trailing '\0'. This
doesn't really matter given the specialised use these are put to, but
it upset valgrind et al when perl was run with -Drv which printf("%s")'s
the contents of the string.

2 years agoUpdate Win32 to CPAN version 0.53
Chris 'BinGOs' Williams [Tue, 6 Aug 2019 10:47:02 +0000 (11:47 +0100)]
Update Win32 to CPAN version 0.53


0.53  [2019-08-05]
        - improve Win32::GetOSDisplayName
        - added Win2016/2019 detection and version information by
          Richard Leach [PR/15]
        - Include wchar.h to allow building with g++ by Tony Cook [rt#127836]

0.52_02 [2018-11-02] by Reini Urban
        - added () usage croaks.
        - Fixed a -Warray-bounds buffer overflow in LONGPATH,
        - Fix various -Wunused warnings
          and two -Wmaybe-uninitialized.

0.52_01 [2017-11-30]
        - add missing const

2 years agoop_dump(): display a wild parent pointer.
David Mitchell [Mon, 5 Aug 2019 15:22:30 +0000 (16:22 +0100)]
op_dump(): display a wild parent pointer.

Normally the PARENT is displayed only for top-level ops: lower-level
ops have the obvious parent.

This commit adds a check that a lower-level op has a valid parent (i.e.
non-null, points to an op with OPf_KIDS and one of the kids is us).
If these checks fails, the raw content of op_sibparent is displayed.

2 years agoI18N::LangTags: minor clarification
David Cantrell [Thu, 11 Jul 2019 11:04:40 +0000 (12:04 +0100)]
I18N::LangTags: minor clarification

Don't imply that there are other undocumented env vars in play

2 years agoI18N::LangTags: document IGNORE_WIN32_LOCALE
David Cantrell [Thu, 11 Jul 2019 11:03:20 +0000 (12:03 +0100)]
I18N::LangTags: document IGNORE_WIN32_LOCALE

2 years agoI18N::LangTags: bump version
David Cantrell [Thu, 11 Jul 2019 11:35:58 +0000 (12:35 +0100)]
I18N::LangTags: bump version

2 years ago[MERGE] slim down opslot structure.
David Mitchell [Mon, 5 Aug 2019 10:35:08 +0000 (11:35 +0100)]
[MERGE] slim down opslot structure.

When OPs are allocated from a slab (the normal case), what are actually
allocated from the slab are opslot structs, which consist of an OP plus
two pointers.

The branch reduces those two pointers to two U16s, which saves 8 bytes
per op on a 64-bit system.

A further 8 bytes could be saved if those two U16s were included as
extra fields in the OP structure (and the opslot struct disposed of),
but unfortunately too much code does things like Zero(o) or Copy(o1,o2)
which would obliterate the allocation info contained in those two U16s.

2 years agoPerl_opslab_force_free() adjust loop test
David Mitchell [Tue, 16 Jul 2019 15:30:42 +0000 (16:30 +0100)]
Perl_opslab_force_free() adjust loop test

Formerly, slots were allocated within a slab, but leaving the very top
word in the slab as a NULL pointer which appeared as a fake slot so that
a 'while (slot->opslot_next)' loop would stop. Since opslot_next has
been eradicated and the NULL is no longer allocated, the loop condition
for scanning all slots can be simplified slightly (with no change in

2 years agoOPSLOT: replace opslot_next with opslot_size
David Mitchell [Tue, 16 Jul 2019 15:14:58 +0000 (16:14 +0100)]
OPSLOT: replace opslot_next with opslot_size

Currently, each allocated opslot has a pointer to the opslot that was
allocated immediately above it. Replace this with a U16 opslot_size field
giving the size of the opslot. The next opslot can then be found by
adding slot->opslot_size * sizeof(void*) to slot.

This saves space.

2 years agostruct opslot: document a field better
David Mitchell [Mon, 15 Jul 2019 10:55:27 +0000 (11:55 +0100)]
struct opslot: document a field better

2 years agoopslabs: change opslab_first to opslab_free_space
David Mitchell [Sat, 13 Jul 2019 19:27:45 +0000 (20:27 +0100)]
opslabs: change opslab_first to opslab_free_space

Currently a OPSLAB maintains a pointer to the lowest allocated OPSLOT
within the slab (slots are allocated downwards). Replace this pointer
with a U16 indicating how many pointer-sized words are free below the
lowest allocated slot.

2 years agoOPSLAB: always have opslab_size field
David Mitchell [Sat, 13 Jul 2019 17:53:08 +0000 (18:53 +0100)]
OPSLAB: always have opslab_size field

Currently this struct only has the opslab_size field on debugging
builds. Change it so that this field is always present. This will make
it easier to not need a fake partial OPSLOT at the end of the slab with
a NULL opslot_next field, which will in turn simplify converting
opslot_next into  U16 size field shortly.

2 years agomake opslot_slab an offset in current slab
David Mitchell [Sat, 13 Jul 2019 17:43:30 +0000 (18:43 +0100)]
make opslot_slab an offset in current slab

Each OPSLOT allocated within an OPSLAB contains a pointer, opslot_slab,
which points back to the first (head) slab of the slab chain (i.e. not
necessarily to the slab which the op is contained in).

This commit changes the pointer to be a 16-bit offset from the start of
the current slab, and adds a pointer at the start of each slab which
points back to the head slab.

The mapping from an op to the head slab is now a two-step process: use
the op's slot's opslot_offset field to find the start of the current
slab, then use that slab's new opslab_head pointer to find the head

The advantage of this is that it reduces the storage per op.  (It
probably doesn't make any practical difference yet, due to alignment
issues, but that will will be sorted shortly in this branch.)

2 years agoPerl_Slab_Alloc(): rename 'slab' to 'head_slab'
David Mitchell [Sat, 13 Jul 2019 16:52:51 +0000 (17:52 +0100)]
Perl_Slab_Alloc(): rename 'slab' to 'head_slab'

Rename this local var to better identify that it always points to the
first slab in the slab chain, rather than to the current slab.