This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
20 months agoperlipc: strict safety, consistency, cleanup
Dan Book [Wed, 18 Dec 2019 21:55:48 +0000 (16:55 -0500)]
perlipc: strict safety, consistency, cleanup

* made all examples consistently strict-safe
* included 'use strict' and 'use warnings' in all "full" examples
* removed -w from shebangs (replaced by 'use warnings')
* removed inconsistent forward declaration of variables
* mention in IO::Handle comment that it's only needed before 5.14
* link to core modules IPC::Open2, IPC::Open3, and Socket
* add required waitpid to IPC::Open2 example
* removed unnecessary usage of English
* removed unnecessary usage of FileHandle

20 months agoRevert "Add some defensive coding to av_store()"
Karl Williamson [Thu, 2 Jan 2020 17:09:31 +0000 (10:09 -0700)]
Revert "Add some defensive coding to av_store()"

This reverts commit bc62bf8519f9005df2fb29dbd3d330202b258b6b.

As Dave Mitchell said in <Perl/perl5/issues/17265/570253376@github.com>

"The docs for av_store() say that the caller is responsible for first
incrementing the ref count of the new SV before passing it to
av_store(). In the normal case of the two elements being different,
av_store() will decrement the old SV before storing the new one, and
everything is good. When the two elements are the same SV, av_store()
*still* needs to decrement the ref count, to undo the increment the
caller just did."

This should resolve GH #17265

20 months agoOP_MULTIDEREF: avoid trailing null aux byte
David Mitchell [Thu, 2 Jan 2020 14:00:23 +0000 (14:00 +0000)]
OP_MULTIDEREF: avoid trailing null aux byte

GH #17301

The aux array in an OP_MULTIDEREF op consists of an action word
containing as many actions as will fit shifted together, followed by
words containing the arguments for those actions. Then another action
word, and so on. The code in S_maybe_multideref() which creates those
ops was reserving a new slot in the aux array for a new action word when
the old one became full. If it then turned out that no  more actions
were needed, this extra slot was harmlessly filled with a zero.

However it turns out that the B::UNOP_AUX::aux_list() introspection
method would, under those circumstances, claim to have returned one
more SV on the stack than it actually had, leading to SEGVs etc.

I could have fixed aux_list() directly to cope with an extra null word,
but instead I did the more general fix of ensuring that
S_maybe_multideref() never adds an extra null word in the first place.

The test added to ext/B/t/b.t fails before this commit; the new test
in lib/B/Deparse.t doesn't, but was added for completeness.

20 months agoEncode: stop importing t/whatwg-aliases.t test
Nicolas R [Mon, 30 Dec 2019 23:10:36 +0000 (16:10 -0700)]
Encode: stop importing t/whatwg-aliases.t test

Do not import t/whatwg-aliases.t which is failing when
AUTHOR_TESTING is set.

20 months agoAdjust smoke-information workflow
Nicolas R [Mon, 30 Dec 2019 23:27:43 +0000 (16:27 -0700)]
Adjust smoke-information workflow

The smoke-information workflow was failing on Pull Request.

1/ need to pull from origin in order to know 'blead' (which
in most cases is going to be GITHUB_BASE_REF)

2/ stop using GITHUB_HEAD_REF and use HEAD instead.

20 months agoadd POD for PL_phase, including example
Felipe Gasper [Fri, 27 Dec 2019 02:09:08 +0000 (21:09 -0500)]
add POD for PL_phase, including example

20 months agoUpdate documentation for hash_seed()
Slaven Rezic [Sun, 29 Dec 2019 23:01:24 +0000 (18:01 -0500)]
Update documentation for hash_seed()

Update $VERSION.

For:  https://github.com/Perl/perl5/issues/17399

20 months agoPATCH: GH #17391 tr/// regression
Karl Williamson [Thu, 26 Dec 2019 23:00:50 +0000 (16:00 -0700)]
PATCH: GH #17391 tr/// regression

This was the result of my not thinking through how things should work.
I added tests for the incorrect behavior.  This commit modifies them, so
that there is no need for the test in the ticket.

20 months agoop.c: Fix typo in comment
Karl Williamson [Sun, 29 Dec 2019 03:00:53 +0000 (20:00 -0700)]
op.c: Fix typo in comment

20 months agoInclude <stdio.h> in getpgrp/setpgrp probes for printf prototype.
Andy Dougherty [Wed, 28 Aug 2019 14:30:23 +0000 (10:30 -0400)]
Include <stdio.h> in getpgrp/setpgrp probes for printf prototype.

C compilers typically issue a warning, but c++ compilers may abort with
an error.

20 months agoFix strtoll, strtoul, and strtouq probes to compile under clang++.
Andy Dougherty [Tue, 27 Aug 2019 19:22:05 +0000 (15:22 -0400)]
Fix strtoll, strtoul, and strtouq probes to compile under clang++.

The test programs were missing the stdlib.h header, and needed
tweaks to the check() prototype to compile under clang++.  These
changes should be fine for C compilers as well, but they have typically
been more forgiving, so shouldn't be affected.

20 months agoFix strtoull() probe to run under clang++.
Andy Dougherty [Tue, 27 Aug 2019 19:00:26 +0000 (15:00 -0400)]
Fix strtoull() probe to run under clang++.

Include the appropriate header and get rid of slightly
incorrect prototype.  Change function return type to void
since we don't explicitly return a useful value.

20 months agoUse a compile and run test for lchown() to satisfy clang++.
Andy Dougherty [Tue, 27 Aug 2019 16:58:23 +0000 (12:58 -0400)]
Use a compile and run test for lchown() to satisfy clang++.

For glibc, previous reports were that some functions (such as lchown())
are present in libc, but are unimplemented.  That is, they always fail
and set errno=ENOSYS.  Unfortunately, the stub test doesn't work under
clang++.  Thus use a compile and run test.  This should be more reliable.

20 months agoAdd <stdlib.h> for futimes compilation test.
Andy Dougherty [Tue, 27 Aug 2019 16:55:57 +0000 (12:55 -0400)]
Add <stdlib.h> for futimes compilation test.

Since the test uses exit(), the appropriate header should be
included.  clang++ throws an error otherwise.

20 months agoPOSIX.xs: Fix typo displayed when fcn doesn't exist
Karl Williamson [Sun, 29 Dec 2019 19:03:16 +0000 (12:03 -0700)]
POSIX.xs: Fix typo displayed when fcn doesn't exist

20 months agoop.c: Use %NVgf instead of %g format in debug stmt
Karl Williamson [Sun, 29 Dec 2019 18:10:13 +0000 (11:10 -0700)]
op.c: Use %NVgf instead of %g format in debug stmt

The former is portable to different sized doubles.

20 months agoIntroduce EXAMPLES section of documentation
James E Keenan [Tue, 12 Nov 2019 21:25:57 +0000 (16:25 -0500)]
Introduce EXAMPLES section of documentation

Provide contextualized invocations of 'Porting/bisect.pl', e.g.:

* What was the problem for which we were bisecting?

* What, if anything, did we do prior to bisecting?

* What is the bug ticket for this problem?

Examples:

* Bisection with target 'miniperl'

* Bisecting failure on threaded builds only

* Example for '--crash' switch

* Failure of 'make' to complete build with specific C-compiler

20 months agoDocument that epoch is always 1970
Bernhard M. Wiedemann [Mon, 23 Dec 2019 20:15:03 +0000 (21:15 +0100)]
Document that epoch is always 1970

and not meant to be interpreted as 2070 because of rolling century.

Fixes GH issue 16431

Bernhard M. Wiedemann is now a Perl author.

20 months agoregcomp.c: Use marker for non-user properties
Karl Williamson [Fri, 27 Dec 2019 18:40:46 +0000 (11:40 -0700)]
regcomp.c: Use marker for non-user properties

A marker is created for a property that could be both a user-defined
one, and an official Unicode one.  The expansion of these is deferred
until runtime, in case the sub that implements a user-defined property
wasn't known at the time of the pattern compilation.  If at runtime,
there still isn't the proper sub, the property is looked up as
potentially an official Unicode one.

But I forgot to check the marker, which is set only if there is a
potential ambiguity.  If the marker isn't set, there is no need to try
to look it up as an official Unicode property.  I couldn't think of a
test where this fails, but at least it saves effort.

20 months agoPATCH: GH #17384 out of bounds read in qr//
Karl Williamson [Fri, 27 Dec 2019 18:20:08 +0000 (11:20 -0700)]
PATCH: GH #17384 out of bounds read in qr//

This turned out to be because there are two versions of the property
name being parsed: 1) the original input; and 2) a canonicalized one
with characters squeeezed out that are usually optional, such as spaces,
dashes and, here, underscores.

The code was conflating the two names, and moving along the squeezed
name based on counts from the unsqueezed one, hence going too far in the
buffer.

20 months agoregcomp.c: Change names of 2 macros
Karl Williamson [Wed, 25 Dec 2019 08:37:37 +0000 (01:37 -0700)]
regcomp.c: Change names of 2 macros

This is in preparation for the next commit, reflecting their new purpose

20 months agot/test.pl: Fix to display properly on EBCDIC
Karl Williamson [Sat, 14 Dec 2019 20:26:36 +0000 (13:26 -0700)]
t/test.pl: Fix to display properly on EBCDIC

This was more complicated than it need be for modern perls.
Devel::PPPort has a version that works with older ones.

And it didn't work properly on EBCDIC, thinking printables weren't, and
vice versa.

20 months agowin32/vdir.h: Rmv extraneous line
Karl Williamson [Thu, 26 Dec 2019 21:54:37 +0000 (14:54 -0700)]
win32/vdir.h: Rmv extraneous line

introduced by 9c35352692462eae5f6e2078f2ee69870a9042a2

20 months agoPATCH: GH #17381 netbsd static assert failure
Karl Williamson [Sun, 22 Dec 2019 01:51:38 +0000 (18:51 -0700)]
PATCH: GH #17381 netbsd static assert failure

As discussed in the ticket, static assertions aren't always enabled
here.  The solution is to use our already-existing fallback to emulate
static assertions in more instances as suggested in the ticket.

20 months agoutf8.c: Use inRANGE
Karl Williamson [Sun, 8 Dec 2019 16:20:55 +0000 (09:20 -0700)]
utf8.c: Use inRANGE

It is clearer and faster

20 months agodoio.c: Use inRANGE macro
Karl Williamson [Fri, 6 Sep 2019 16:25:26 +0000 (10:25 -0600)]
doio.c: Use inRANGE macro

20 months agoutil.c: Use inRANGE macro
Karl Williamson [Wed, 2 Oct 2019 04:34:25 +0000 (22:34 -0600)]
util.c: Use inRANGE macro

20 months agopp_pack.c: Use inRANGE macro
Karl Williamson [Thu, 3 Oct 2019 03:10:36 +0000 (21:10 -0600)]
pp_pack.c: Use inRANGE macro

which is more efficient

20 months agowin32/vdir.h: Use inRANGE macro
Karl Williamson [Thu, 3 Oct 2019 03:02:44 +0000 (21:02 -0600)]
win32/vdir.h: Use inRANGE macro

which is more efficient.

20 months agowin32/win32.c: Use inRANGE macro
Karl Williamson [Thu, 3 Oct 2019 03:02:01 +0000 (21:02 -0600)]
win32/win32.c: Use inRANGE macro

which is more efficient.

20 months agowin32/win32io.c: Use inRANGE macro
Karl Williamson [Thu, 3 Oct 2019 03:01:21 +0000 (21:01 -0600)]
win32/win32io.c: Use inRANGE macro

which is more efficient.

20 months agocaretx.c: Use inRANGE()
Karl Williamson [Thu, 3 Oct 2019 02:58:15 +0000 (20:58 -0600)]
caretx.c: Use inRANGE()

This is more efficient

20 months agoUpdate podlators to CPAN version 4.13
Chris 'BinGOs' Williams [Thu, 26 Dec 2019 18:16:02 +0000 (18:16 +0000)]
Update podlators to CPAN version 4.13

  [DELTA]

podlators 4.13 (2019-12-25)

    Drop support for Perl 5.6.  The minimum supported version is now Perl
    5.8.  Perl 5.6 had not been tested even by CPAN Testers in some time
    and isn't supported by Travis-CI, so true support is dubious.
    Dropping that version allows cleaning up some old compatibility code.

    Fix a warning when outputing to something without a PerlIO layer, such
    as when output_string is used.

    [Pod::Text] Fix behavior of S<> with Unicode input to be consistent
    with behavior with a default encoding, namely treat all whitespace
    inside S<> as non-space characters and do not collapse it with
    adjacent whitespace.

    [Pod::Text::Termcap] Remove an ancient workaround that set the
    TERMPATH environment variable whenever a Pod::Text::Termcap object was
    created in order to add /usr/share/lib/termcap, necessary on some
    ancient Solaris systems.  Setting environment variables is bad
    behavior for a module, and the Solaris systems requiring this
    workaround are long obsolete.

    [Pod::Text::Termcap] Remove the fallback to VT100 escape sequences if
    Term::Cap was not able to find sequences for bold, underline, or
    normal text, and instead skip that part of the formatting.  This will
    produce more correct behavior on dumb terminals at the possible cost
    of losing formatting on systems with malfunctioning terminal
    databases, which seems like an improvement.  Thanks, Zenin.  (#131124)

    Further improve the man/no-encode.t test to not care whether Encode
    was already loaded or not.  Thanks, Martin Becker.

    Improve logic for showing large test failures to avoid spurious
    failures on systems without diff.

20 months agoperldelta for commit b3cc7c67ca565983de186f65a50776a09393c29b
James E Keenan [Thu, 26 Dec 2019 01:04:50 +0000 (20:04 -0500)]
perldelta for commit b3cc7c67ca565983de186f65a50776a09393c29b

20 months agoSync with CPAN version 3.02
Dan Kogai [Thu, 26 Dec 2019 01:01:43 +0000 (20:01 -0500)]
Sync with CPAN version 3.02

The main reason for the release update is to address
https://github.com/Perl/perl5/issues/17382

From Changes:

! t/whatwg-aliases.t
  drop RELEASE_TESTING since Pumpking also uses it.

! bin/enc2xs
  Pulled: enc2xs: Add environment variable to suppress comments

! t/enc_utf8.t
  Pulled: fixup enc_utf8.t for ONLY_PRAGMA_WARNINGS

! Encode/encode.h
  Pulled: Fix linker errors

20 months agoAPItest.xs: fix subsignature test
David Mitchell [Wed, 25 Dec 2019 11:27:39 +0000 (11:27 +0000)]
APItest.xs: fix subsignature test

THX_parse_keyword_subsignature() in APItest.xs does, amongst other
things, return a string representation of an OP_ARGCHECK op.

My commit v5.31.4-13-gf417cfa906 made the data attached to that op be a
struct rather than an array of IVs, but missed updating APItest.xs,
which this commit now amends.

This may or may not fix GH #17202 where the returned value of the
slurpy field was wrong on big-endian systems.

This is presumably due to (char)aux[2] not being the same as
aux->slurpy where one is an IV and the other is a char field.

20 months agoPOSIX.pod: Clarify strtod() text
Karl Williamson [Sat, 21 Dec 2019 21:36:19 +0000 (14:36 -0700)]
POSIX.pod: Clarify strtod() text

20 months agoPOSIX.pod: Clarify setlocale() text
Karl Williamson [Sat, 21 Dec 2019 21:35:30 +0000 (14:35 -0700)]
POSIX.pod: Clarify setlocale() text

20 months agoPOSIX.pod: Clarify localeconv() text
Karl Williamson [Sat, 21 Dec 2019 21:31:37 +0000 (14:31 -0700)]
POSIX.pod: Clarify localeconv() text

20 months agoPOSIX.pod: Fix typo
Karl Williamson [Sat, 21 Dec 2019 21:29:19 +0000 (14:29 -0700)]
POSIX.pod: Fix typo

20 months agoperllocale: Tweak cautionary text
Karl Williamson [Sat, 21 Dec 2019 20:44:52 +0000 (13:44 -0700)]
perllocale: Tweak cautionary text

20 months agoUpdate documentation, readmes, comments, and utilities to reference the GitHub issue...
Dan Book [Sun, 22 Dec 2019 22:13:31 +0000 (17:13 -0500)]
Update documentation, readmes, comments, and utilities to reference the GitHub issue tracker

The perlbug utility and perlbug@perl.org should no longer be used to submit bug reports or patches.

21 months agoperlipc: modernize open and handle usage
Dan Book [Wed, 18 Dec 2019 21:45:06 +0000 (16:45 -0500)]
perlipc: modernize open and handle usage

Replace bareword filehandles with lexicals, use three-arg open wherever
possible, explain that two-arg open may still be necessary for piped opens on
non-Unixy platforms, separate the discussion of three-arg pipe open from list
open, pass the now-lexical filehandles into the spawn function in the TCP
examples, and remove the obsolete explanation of lexical filehandles.

21 months agoClarify SvPVbyteFOO docs
Karl Williamson [Mon, 5 Feb 2018 22:48:12 +0000 (15:48 -0700)]
Clarify SvPVbyteFOO docs

These all croak if the SV string is in UTF-8 containing wide characters.

21 months agoA yuletide log
Chris 'BinGOs' Williams [Sat, 21 Dec 2019 10:56:46 +0000 (10:56 +0000)]
A yuletide log

21 months agoAdjust Porting/release_managers_guide.pod for perlivp
Nicolas R [Sat, 21 Dec 2019 05:01:36 +0000 (22:01 -0700)]
Adjust Porting/release_managers_guide.pod for perlivp

21 months agoAdd an extra smoker run flavor on GitHub Actions
Nicolas R [Sat, 21 Dec 2019 04:58:55 +0000 (21:58 -0700)]
Add an extra smoker run flavor on GitHub Actions

-Duserelocatableinc is recommended in the
release manager guide.

Let's add it :-)

21 months agoUpdate Module::CoreList for 5.31.8
Nicolas R [Sat, 21 Dec 2019 04:52:35 +0000 (21:52 -0700)]
Update Module::CoreList for 5.31.8

21 months agoBump the perl version in various places for 5.31.8
Nicolas R [Sat, 21 Dec 2019 04:38:25 +0000 (21:38 -0700)]
Bump the perl version in various places for 5.31.8

21 months agoPOSIX.pod: Fix typo
Karl Williamson [Fri, 20 Dec 2019 21:41:48 +0000 (14:41 -0700)]
POSIX.pod: Fix typo

21 months agoPOSIX.pod: Update setlocale() docs
Karl Williamson [Fri, 20 Dec 2019 21:40:47 +0000 (14:40 -0700)]
POSIX.pod: Update setlocale() docs

This should have been updated in 5.28, but was overlooked.

21 months agoperllocale: Clarify text
Karl Williamson [Fri, 20 Dec 2019 21:39:13 +0000 (14:39 -0700)]
perllocale: Clarify text

21 months agonew perldelta for 5.31.8
Nicolas R [Sat, 21 Dec 2019 04:29:34 +0000 (21:29 -0700)]
new perldelta for 5.31.8

21 months agoTick off 5.31.7 on 2019-12-20
Nicolas R [Sat, 21 Dec 2019 04:11:54 +0000 (21:11 -0700)]
Tick off 5.31.7 on 2019-12-20

21 months agoUpdate epigraph for v5.31.7
Nicolas R [Fri, 20 Dec 2019 22:09:31 +0000 (15:09 -0700)]
Update epigraph for v5.31.7

21 months agoFinalise perldelta and update perlhist v5.31.7
Nicolas R [Fri, 20 Dec 2019 18:59:42 +0000 (11:59 -0700)]
Finalise perldelta and update perlhist

21 months agoAdjust release_managers_guide for GH tracker
Nicolas R [Fri, 20 Dec 2019 22:03:36 +0000 (15:03 -0700)]
Adjust release_managers_guide for GH tracker

21 months agoUpdate Module::CoreList for 5.31.7
Nicolas R [Fri, 20 Dec 2019 21:39:37 +0000 (14:39 -0700)]
Update Module::CoreList for 5.31.7

21 months agoMention CI smokers in release_managers_guide
Nicolas R [Fri, 20 Dec 2019 18:47:20 +0000 (11:47 -0700)]
Mention CI smokers in release_managers_guide

List and link to the Continuous Integrations currently setup.

21 months agoAdd a basic linux smoke GitHub Action
Nicolas R [Fri, 20 Dec 2019 17:55:53 +0000 (10:55 -0700)]
Add a basic linux smoke GitHub Action

In addition to Travis CI, it will not hurt
to have some additional linux smokers running.

We can see overtime if we want to keep one or the
other.

♪ Let it Smoke, Let it Smoke ♫♫♫♬♭

Note: GitHub allow a total of 20 concurrent jobs.

21 months agoBump Maintainers to point to CPAN 2.27
Nicolas R [Fri, 20 Dec 2019 17:46:59 +0000 (10:46 -0700)]
Bump Maintainers to point to CPAN 2.27

Avoid listing CPAN in modules discrepancies list
as the trial version we were using, after exclusions
is the same as the most recent 2.27 one.

21 months agoUpdate Net::Ping to upstream version 2.72
Nicolas R [Fri, 20 Dec 2019 17:14:19 +0000 (10:14 -0700)]
Update Net::Ping to upstream version 2.72

This retains blead customizations:
1a58b39af8 remove of 'use vars'
7bfdd8260c 500_ping_icmp.t: remove sudo code

This is mainly a unit test changes / noop changes.

Customized files are:
 t/000_load.t
 t/001_new.t
 t/010_pingecho.t
 t/500_ping_icmp.t
 t/501_ping_icmpv6.t

Files not ported to blead:
 t/020_external.t
 t/600_pod.t
 t/601_pod-coverage.t

Do not list Net::Ping customized files as mentioned by 48a109d29

Note: we could have considered doing nothing for this update,
but this would avoid updating to the CPAN version, and preserved
the existing patches.

21 months agofixing usally and patern
Bryan Stenson [Thu, 19 Dec 2019 21:15:33 +0000 (13:15 -0800)]
fixing usally and patern

Typos in documentation and inline comments.

Pursuant to discussion on openbsd-tech list:
https://marc.info/?t=157678644800005&r=1&w=2
https://marc.info/?t=157678570300002&r=1&w=2

For:
https://github.com/Perl/perl5/issues/17379
https://github.com/Perl/perl5/pull/17380

Committer:
Bryan Stenson is now a Perl author.
Regenerate uconfig.sh via: perl regen/uconfig_h.pl

21 months agot/charset_tools.pl: Avoid some work on ASCII platforms
Karl Williamson [Thu, 19 Dec 2019 18:28:05 +0000 (11:28 -0700)]
t/charset_tools.pl: Avoid some work on ASCII platforms

This sets things up so that functions on ASCII simply return their
arguments, and don't have extra stuff in them for EBCDIC.  It also moves
an array initialization out of a function, so it is only done once, and
doesn't initialize it on ASCII, as it isn't needed there.

21 months agot/re/regexp.t: Speed up many regex tests on ASCII platform
Karl Williamson [Thu, 19 Dec 2019 16:59:54 +0000 (09:59 -0700)]
t/re/regexp.t: Speed up many regex tests on ASCII platform

This commit:

 commit 0cd59ee9ca0f0af3c0c172ecc27bb3f02da6db08
 Author:     Karl Williamson <khw@cpan.org>
 AuthorDate: Fri Sep 6 10:23:26 2019 -0600
 Commit:     Karl Williamson <khw@cpan.org>
 CommitDate: Mon Nov 11 21:05:13 2019 -0700

     t/re/regexp.t: Only convert to EBCDIC once

     Some tests get added as we go along, and those added tests have already
     been converted to EBCDIC if necessary.  Don't reconvert, which messes
     things up.

caused a huge slowdown in regex tests.  The most noticeable on my
platform was regexp_qr_embed_thr.t which doubled in wall clock time
spent.

It turns out that it was because a function was now always being called,
and that does nothing on ASCII platforms besides return its argument,
which then was copied over the argument.

This new commit causes the function to be a constant { 1; } on ASCII
platforms, so should be completely optimized out, returning the time
spent in that .t to 5.30 levels.

21 months agoregen/mk_invlists.pl: Move inversion list adjacent to similar
Karl Williamson [Thu, 19 Dec 2019 03:25:34 +0000 (20:25 -0700)]
regen/mk_invlists.pl: Move inversion list adjacent to similar

This will lessen any paging that might occur.  Further, on most builds,
it and another table are identical, so only one is actually needed.

21 months agoperlfunc: link to "Plain Old Comments" section of perlsyn from __FILE__, __LINE__...
Dan Book [Mon, 18 Mar 2019 22:29:26 +0000 (18:29 -0400)]
perlfunc: link to "Plain Old Comments" section of perlsyn from __FILE__, __LINE__, and caller

21 months agoMention that you cannot return from do BLOCK
Dan Book [Wed, 18 Dec 2019 21:39:38 +0000 (16:39 -0500)]
Mention that you cannot return from do BLOCK

21 months agoPATCH: GH #17371
Karl Williamson [Wed, 18 Dec 2019 18:46:40 +0000 (11:46 -0700)]
PATCH: GH #17371

This was caused by a character being counted as both the first delimiter
of a pattern, and the final one, which led to the pattern's length being
negative, which was turned into a very large unsigned number.

21 months agoAdd memCHRs() macro and use it
Karl Williamson [Sat, 7 Dec 2019 20:47:05 +0000 (13:47 -0700)]
Add memCHRs() macro and use it

This replaces strchr("list", c) calls throughout the core.  They don't
work properly when 'c' is a NUL, returning the position of the
terminating NUL in "list" instead of failure.  This could lead to
segfaults or even security issues.

21 months agoUpdate ExtUtils-MakeMaker to CPAN version 7.42
Chris 'BinGOs' Williams [Wed, 18 Dec 2019 09:16:30 +0000 (09:16 +0000)]
Update ExtUtils-MakeMaker to CPAN version 7.42

  [DELTA]

7.42    Tue 17 Dec 22:02:25 GMT 2019

    No changes since v7.41_01

7.41_01 Mon 16 Dec 21:36:24 GMT 2019

    Test fixes:
    - README.pod warnings are suppressed during testing
      so no need to skip when PERL_CORE is defined

    Doc fixes:
    - Update referenced modules for new distributions
    - Updated SEE ALSO section accordingly

21 months agoPATCH: GH #17363 Reserve two sequences
Karl Williamson [Wed, 18 Dec 2019 00:59:16 +0000 (17:59 -0700)]
PATCH: GH #17363 Reserve two sequences

We can't guarantee what people might do in the future with these two
currently unused illegal pattern sequences.  What I did was put a
comment and code where things would have to change to use them to refer
to this ticket.

21 months agoPATCH GH #17276 New compilation diagnostic
Karl Williamson [Tue, 17 Dec 2019 22:21:26 +0000 (15:21 -0700)]
PATCH GH #17276 New compilation diagnostic

The previous patch in commit 830b3eb245d5dbcf095fbd4b5d59764c697c20df
didn't work generally.  This uses #ifdef instead.

21 months agoActually fix GH #17370
Karl Williamson [Tue, 17 Dec 2019 21:59:29 +0000 (14:59 -0700)]
Actually fix GH #17370

I only added a test, but not the change in
9f16475a53933d1d9c547f871b97b3b12160cece.  The test passes except when
run under address sanitizer or valgrind.

21 months agodon't use -Werror=declaration-after-statement with C++
Tony Cook [Tue, 17 Dec 2019 00:32:40 +0000 (11:32 +1100)]
don't use -Werror=declaration-after-statement with C++

declaration after statement is normal for C++ and C++ compilers
rightly complain if we try to warn (or error) on them, so don't
try to.

fixes #17353

21 months agoPATCH: GH #17370, read beyond buffer in grok_inf_nan
Karl Williamson [Tue, 17 Dec 2019 21:23:07 +0000 (14:23 -0700)]
PATCH: GH #17370, read beyond buffer in grok_inf_nan

Like GH #17367, this was caused by a failure to check that we aren't at
the end of the buffer after advancing the ptr to it.

21 months agoNote that certain flags are documented
Karl Williamson [Tue, 17 Dec 2019 00:02:53 +0000 (17:02 -0700)]
Note that certain flags are documented

This is useful in Devel::PPPort for generating its api-info data.  That
useful feature of D:P allows someone to find out what was the first
release of Perl to have a function, macro, or flag.  And whether using
ppport.h backports it further.

I went through apidoc.pod and looked for flags that were documented but
that D:P didn't know about.  This commit adds entries for each so that
D:P can find them.

21 months agoPATCH: GH #17367 read 1 beyond end of buffer
Karl Williamson [Wed, 13 Nov 2019 22:39:15 +0000 (15:39 -0700)]
PATCH: GH #17367 read 1 beyond end of buffer

This is a bug in grok_infnan() in which in one place it failed to check
that it was reading within bounds.

21 months agoLocal variable 'o' hides a parameter of the same name.
James E Keenan [Sun, 15 Dec 2019 22:38:35 +0000 (17:38 -0500)]
Local variable 'o' hides a parameter of the same name.

This sub-optimal code has been reported by LGTM static code analysis.
There are actually two such instances very close to one another within
op.c.  This commit handles only the first of them, renaming a variable
and regularizing the indents to make the relevant scope more self-evident.

21 months agosv.h: Fix typo in pod
Karl Williamson [Tue, 17 Dec 2019 00:06:29 +0000 (17:06 -0700)]
sv.h: Fix typo in pod

21 months agoUpdate ExtUtils-MakeMaker to CPAN version 7.40
Chris 'BinGOs' Williams [Mon, 16 Dec 2019 20:36:21 +0000 (20:36 +0000)]
Update ExtUtils-MakeMaker to CPAN version 7.40

  [DELTA]

7.40    Mon 16 Dec 19:33:13 GMT 2019

    No changes since v7.39_05

7.39_05 Thu 21 Nov 11:45:13 GMT 2019

    Bug fixes:
    - Always assume that libraries are shared on AIX

7.39_04 Mon 18 Nov 14:54:46 GMT 2019

    Test Fixes:
    - Skip "merged /usr" tests on Cygwin

    QA Fixes:
    - Added cygwin testing with Github actions
    - Added macos testing with Github actions

7.39_03 Sun 17 Nov 19:53:04 GMT 2019

    Doc fixes:
    - Fix typo in link to MakeMaker
    - Link to referenced modules from MM_Cygwin maybe_command

7.39_02 Thu  7 Nov 09:33:29 GMT 2019

    Cygwin fixes:
    - Removed MM_Cygwin all_target() override

    Doc fixes:
    - Add crosslinks to various referenced documentation

7.39_01 Mon 16 Sep 07:19:37 BST 2019

    Test fixes:
    - README.pod warnings suppressed during testing
    - Don't parallise dynamic/static tests

21 months agoTick off 5.31.6, released 2019-11-20
Matthew Horsfall [Mon, 16 Dec 2019 13:56:41 +0000 (08:56 -0500)]
Tick off 5.31.6, released 2019-11-20

21 months agoharden IO's cachepropagate-tcp
Tony Cook [Thu, 12 Dec 2019 00:30:59 +0000 (11:30 +1100)]
harden IO's cachepropagate-tcp

This failed on Win32 like in the #17351 CI checks with:

../dist/if/t/if.t .................................................. ok
Can't call method "sockdomain" on an undefined value at t/cachepropagate-tcp.t line 46.
# Looks like your test exited with 9 just after 5.
../dist/IO/t/cachepropagate-tcp.t ..................................
Dubious, test returned 9 (wstat 2304, 0x900)
Failed 3/8 subtests

I suspect what happened is there was a race between the parent
accepting the connection and the child exiting and closing the
connection.

The Microsoft documentation for accept() indicates one possible
reason for failure is:

WSAECONNRESET
An incoming connection was indicated, but was subsequently
        terminated by the remote peer prior to accepting the call.

which I suspect happened here.

So I've:

- added a basic error check for the result of accept()
- made the child to wait for the parent to close the socket
- the parent explicitly closes the socket

21 months agotreat TAINT_get and TAINTING_get as unlikely
Tony Cook [Thu, 12 Dec 2019 05:49:11 +0000 (16:49 +1100)]
treat TAINT_get and TAINTING_get as unlikely

While testing #17359 it appeared that inlining of SvTRUE was being
suppressed (indicated by -Winline) by being used in the statement:

  if (TAINT_get || SvTRUE(error)) {

but making TAINT_get unlikely allowed it to be inlined.

I expect even in a program that does use taint the vast majority
of data will be untainted, so I think it's safe to make TAINT_get
UNLIKELY().

TAINTING_get is a harder case, but it's only used in a relatively
much smaller number of cases, and I expect most runs of a system
perl will have neither -T nor -t.

21 months agoRevert "Move PL_check to the interp vars to fix threading issues"
Tony Cook [Sun, 15 Dec 2019 21:56:52 +0000 (08:56 +1100)]
Revert "Move PL_check to the interp vars to fix threading issues"

and the associated commits, at least until a way to make
wrap_op_checker() work is available.

21 months agoUpdate release schedule
Sawyer X [Sun, 15 Dec 2019 20:39:01 +0000 (22:39 +0200)]
Update release schedule

21 months agot/re/pat.t: White-space only
Karl Williamson [Thu, 5 Dec 2019 20:16:22 +0000 (13:16 -0700)]
t/re/pat.t: White-space only

21 months agot/re/pat.t: Fix skip count for limited mem platforms
Karl Williamson [Fri, 6 Dec 2019 00:03:43 +0000 (17:03 -0700)]
t/re/pat.t: Fix skip count for limited mem platforms

And rearrange so is easier to see the correct value.

21 months agot/re/pat.t: Skip tests that don't work on EBCDIC
Karl Williamson [Wed, 4 Dec 2019 20:45:24 +0000 (13:45 -0700)]
t/re/pat.t: Skip tests that don't work on EBCDIC

These are fuzzer generated, and don't translate well to EBCDIC

21 months agoperlreref: Fix typos
Karl Williamson [Sat, 14 Dec 2019 04:36:49 +0000 (21:36 -0700)]
perlreref: Fix typos

Pointed out in GH #17363

https://github.com/Perl/perl5/issues/17363

21 months agoavoid identical stack traces
David Mitchell [Fri, 13 Dec 2019 13:48:25 +0000 (13:48 +0000)]
avoid identical stack traces

GH #15109

The output of caller() (e.g. as produced by carp::Confess) produces
multiple identical outputs when within a nested use/require. This is
because at the time of calling the 'BEGIN { require ... }', PL_curcop is
set to &PL_compiling, which is a fixed buffer within the interpreter,
whose individual file and line fields are saved and restored when doing
a new require/eval. This means that within the innermost require,
PL_compiling has file:lineno of the innermost source file, and multiple
saved PL_curcop values in the context stack frames all point to the same
&PL_copmpiling.  So all levels of the stack trace appear to come from the
innermost file.

This commit fixes this (after a fashion) by, at the start of calling a
BEGIN, making PL_curcop point to a temporary copy of PL_compiling
instead.

This is all a bit of a hack.

21 months agoEnable Cygwin smoking on all kinds of branches
Max Maischein [Fri, 13 Dec 2019 18:05:47 +0000 (19:05 +0100)]
Enable Cygwin smoking on all kinds of branches

21 months agoRemove bad "git switch" command
Max Maischein [Fri, 13 Dec 2019 18:05:35 +0000 (19:05 +0100)]
Remove bad "git switch" command

"git switch" isn't supported by Github git anyway

21 months agoIO: update the ChangeLog after a (trial) release of IO to CPAN
Ricardo Signes [Thu, 12 Dec 2019 18:23:34 +0000 (13:23 -0500)]
IO: update the ChangeLog after a (trial) release of IO to CPAN

21 months agoperldelta for a559786348e0
Chris 'BinGOs' Williams [Thu, 12 Dec 2019 01:03:52 +0000 (01:03 +0000)]
perldelta for a559786348e0

21 months agoperldelta for e6c7056ba6f1
Tony Cook [Thu, 12 Dec 2019 00:40:14 +0000 (11:40 +1100)]
perldelta for e6c7056ba6f1

21 months agoun-TODO pl_check.t and remove io/handle.t
Tony Cook [Mon, 9 Dec 2019 00:22:25 +0000 (11:22 +1100)]
un-TODO pl_check.t and remove io/handle.t

io/handle.t depends on IO::Handle using the PL_check hack, but
Nicholas's back portable fix no longer uses that

Fix threaded perl detection, thanks to James Keenan.

21 months agoMove PL_check to the interp vars to fix threading issues
Stefan Seifert [Wed, 30 Oct 2019 15:23:01 +0000 (16:23 +0100)]
Move PL_check to the interp vars to fix threading issues

Fixes issue #14816

21 months agoprovide a test for the PL_check mis-behaviour
Tony Cook [Sun, 8 Dec 2019 23:51:19 +0000 (10:51 +1100)]
provide a test for the PL_check mis-behaviour

Nicholas Clark's fix for IO makes the test in niner's patch
meaningless, so test it separately.

21 months agoNote that G_RETHROW is documented
Karl Williamson [Wed, 11 Dec 2019 18:37:58 +0000 (11:37 -0700)]
Note that G_RETHROW is documented

This is for Devel::PPPort.