perl.git
8 hours ago(perl #133030) make utime() available only if we have both fd and name setting blead
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

29 hours 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.

2 days agofixup for NO_TAINT_SUPPORT smoke-me/jkeenan/xenu/133141-dragonfly
Yves Orton [Tue, 24 Apr 2018 10:45:29 +0000 (12:45 +0200)] 
fixup for NO_TAINT_SUPPORT

3 days 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.

3 days 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 days 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.

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

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
exported.

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
here.

5 days 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.

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

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

5 days 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

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

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

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

5 days 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

5 days 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

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

5 days 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.

6 days 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

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

6 days 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

6 days 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

6 days 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

6 days 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

6 days 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

6 days 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.

6 days 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

6 days agoregen/mk_invlists.pl: Omit #defines
Karl Williamson [Fri, 20 Apr 2018 06:21:46 +0000 (00:21 -0600)] 
regen/mk_invlists.pl: Omit #defines

mph.pl is somewhat more flexible than Devel::Tokenizer::C, and so we can
avoid a bunch of #defines, and use the desired value directly.

6 days 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.

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

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

6 days agoregen/mph.pl: Split function into two
Karl Williamson [Thu, 19 Apr 2018 14:58:22 +0000 (08:58 -0600)] 
regen/mph.pl: 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 mph.pl

6 days agoregen/mph.pl: Move a print around
Karl Williamson [Thu, 19 Apr 2018 14:56:00 +0000 (08:56 -0600)] 
regen/mph.pl: 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

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

Use the perl type names

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

This is copied unchanged from github,

https://github.com/demerphq/uni_prop_parser.git

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

6 days 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.

6 days 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.

6 days agoregen/mk_invlists.pl: Keep core tables adjacent
Karl Williamson [Fri, 20 Apr 2018 02:52:24 +0000 (20:52 -0600)] 
regen/mk_invlists.pl: 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.

6 days 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.

6 days agoregen/mk_invlists.pl: Use one table if applies everywhere
Karl Williamson [Fri, 20 Apr 2018 01:43:18 +0000 (19:43 -0600)] 
regen/mk_invlists.pl: 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.

6 days agoregen/mk_invlists.pl: White space only
Karl Williamson [Fri, 20 Apr 2018 01:13:25 +0000 (19:13 -0600)] 
regen/mk_invlists.pl: White space only

This outdents a for loop initialization section that previously was
nested

6 days agoregen/mk_invlists.pl: Reverse order of table vs EBCDIC
Karl Williamson [Fri, 20 Apr 2018 00:02:30 +0000 (18:02 -0600)] 
regen/mk_invlists.pl: 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

6 days agoregen/mk_invlists.pl: Extract code into subs
Karl Williamson [Thu, 19 Apr 2018 23:06:39 +0000 (17:06 -0600)] 
regen/mk_invlists.pl: Extract code into subs

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

6 days agoregen/mk_invlists.pl: Move some code around
Karl Williamson [Thu, 19 Apr 2018 22:34:04 +0000 (16:34 -0600)] 
regen/mk_invlists.pl: Move some code around

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

6 days agoregen/mk_invlists.pl: Move some code around
Karl Williamson [Thu, 19 Apr 2018 17:04:37 +0000 (11:04 -0600)] 
regen/mk_invlists.pl: Move some code around

This is in preparation for a future commit

6 days agoregen/mk_invlists.pl: Better handle preprocessor directives
Karl Williamson [Thu, 19 Apr 2018 16:29:28 +0000 (10:29 -0600)] 
regen/mk_invlists.pl: 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

6 days 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
things.

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

6 days 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

6 days 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

6 days 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

6 days 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 subs.pm 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 vars.pm
has the same revised text.

6 days 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

6 days 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

6 days 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

6 days 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

6 days 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.

6 days 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

6 days 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

6 days 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

6 days 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.

7 days 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:

v5.27.8-40-g37657a5b6c

    which added utf8n_to_uvchr_msgs to the perl API

v5.27.8-252-gc31ca2013f

    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.

7 days 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.

7 days 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

7 days 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

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

7 days 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

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

7 days 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)

7 days 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.

7 days 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

8 days 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)

8 days 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
details.

8 days 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.

8 days 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.

8 days 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.

8 days 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.

8 days agot/loc_tools.pl: Special case openbsd
Karl Williamson [Mon, 19 Mar 2018 15:11:24 +0000 (09:11 -0600)] 
t/loc_tools.pl: 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
details.

8 days 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.

8 days 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

8 days 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.

8 days 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.

8 days agoregen/mk_invlists.pl: Remove improper line
Karl Williamson [Fri, 6 Apr 2018 02:40:19 +0000 (20:40 -0600)] 
regen/mk_invlists.pl: 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

8 days 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

8 days 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]

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

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

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

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.

9 days 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.

9 days 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.

9 days 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
any.

The next commit will fix the third thing.

9 days 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 https://rt.cpan.org/Public/Bug/Display.html?id=80217

9 days agoregen uconfig.h
Tony Cook [Tue, 17 Apr 2018 01:21:26 +0000 (11:21 +1000)] 
regen uconfig.h

9 days agoRegen after backporting and merging
H.Merijn Brand [Mon, 16 Apr 2018 17:16:10 +0000 (19:16 +0200)] 
Regen after backporting and merging

I am aware that this might break a few tests

10 days agoRevert "S_regmatch: eliminate WHILEM_A_min paren saving"
David Mitchell [Mon, 16 Apr 2018 10:47:00 +0000 (11:47 +0100)] 
Revert "S_regmatch: eliminate WHILEM_A_min paren saving"

This reverts commit 77584140f7cbfe714083cacfa671085466e98a7b.

This optimisation of mine from 5.25.9 is ill-conceived; under the right
permutations of backtracking, it is possible for the current positions
of one of more captures not to restored to their previous positions.

This commit reverts the code change, but keeps the benchmark part of
that commit, and adds a test

10 days agoregen/mk_invlists.pl: stop at 256 for latin1 lists
Karl Williamson [Fri, 6 Apr 2018 02:35:22 +0000 (20:35 -0600)] 
regen/mk_invlists.pl: stop at 256 for latin1 lists

This changes the max of a range down from the platform's infinity to
256 when calculating things dealing with the 0-255 range.  Otherwise, on
some properties, it could go 256..infinity using up all the machine's
memory.

10 days agoregen/mk_invlists.pl: Add comment
Karl Williamson [Fri, 6 Apr 2018 02:29:29 +0000 (20:29 -0600)] 
regen/mk_invlists.pl: Add comment

This gives the paradigm to use should this be needed

10 days ago(perl #131844) fix various space calculation issues in pp_pack.c
Tony Cook [Mon, 7 Aug 2017 23:32:58 +0000 (09:32 +1000)] 
(perl #131844) fix various space calculation issues in pp_pack.c

- for the originally reported case, if the start/cur pointer is in the
  top 75% of the address space the add (cur) + glen addition would
  overflow, resulting in the condition failing incorrectly.

- the addition of the existing space used to the space needed could
  overflow, resulting in too small an allocation and a buffer overflow.

- the scaling for UTF8 could overflow.

- the multiply to calculate the space needed for many items could
  overflow.

For the first case, do a space calculation without making new pointers.

For the other cases, detect the overflow and croak if there's an
overflow.

Originally this used Size_t_MAX as the maximum size of a memory
allocation, but for -DDEBUGGING builds realloc() throws a panic for
allocations over half the address space in size, changing the error
reported for the allocation.

For non-DEBUGGING builds the Size_t_MAX limit has the small chance
of finding a system that has 3GB of contiguous space available, and
allocating that space, which could be a denial of servce in some cases.

Unfortunately changing the limit to half the address space means that
the exact case with the original issue can no longer occur, so the
test is no longer testing against the address + length issue that
caused the original problem, since the allocation is failing earlier.

One option would be to change the test so the size request by pack is
just under 2GB, but this has a higher (but still low) probability that
the system has the address space available, and will actually try to
allocate the memory, so let's not do that.

10 days agoSynch cpan/version/* and other files with CPAN version 0.9923.
John Peacock [Mon, 16 Apr 2018 01:19:38 +0000 (21:19 -0400)] 
Synch cpan/version/* and other files with CPAN version 0.9923.

Per recommendation of Karl Williamson.  Used this program to perform
synchronization:
https://github.com/jkeenan/scripts-misc/blob/master/sync-version-pm.pl

10 days agoperlbug: Ask confirmation if would overwrite existing file
Karl Williamson [Tue, 3 Apr 2018 16:27:25 +0000 (10:27 -0600)] 
perlbug: Ask confirmation if would overwrite existing file

This adds a prompt asking for confirmation if the perlbug report would
overwrite an existing file. My guess is that the normal answer will be
yes.

10 days agoPATCH: (perl #132227 CVE-2018-6797] heap-buffer-overflow
Karl Williamson [Fri, 2 Feb 2018 22:14:27 +0000 (15:14 -0700)] 
PATCH: (perl #132227 CVE-2018-6797] heap-buffer-overflow

Restart an EXACTFish node if we change to uni rules within the node and
encounter a sharp S.  Otherwise we might size too small in pass1,
leading to a buffer overflow.

10 days agoutf8.c: Don't dump malformation past first NUL
Karl Williamson [Tue, 13 Feb 2018 14:03:43 +0000 (07:03 -0700)] 
utf8.c: Don't dump malformation past first NUL

When a UTF-8 string contains a malformation, the bytes are dumped out as
a debugging aid.  One should exercise caution, however, and not dump out
bytes that are actually past the end of the string.  Commit 99a765e9e37
from 2016 added the capability to signal to the dumping routines that
we're not sure where the string ends, and to dump the minimal possible.

It occurred to me that an additional safety measure can be easily added,
which this commit does.  And that is, in the dumping routines to stop at
the first NUL.  All PVs in SVs automatically get a traiing NUL added,
even if they contain embedded NULs.  A NUL can never be part of a
malformation, and so its presence likely signals the end of the string.

10 days agoPATCH: [perl #132055] Assertion failure
Karl Williamson [Sat, 24 Mar 2018 16:38:59 +0000 (10:38 -0600)] 
PATCH: [perl #132055] Assertion failure

This checks for and aborts if it find control characters in a supposed
Unicode property name.  Code further along could not handle these.

This also fixes #132553 and #132658