This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
3 years agoFix lack of closing ] in link.
James E Keenan [Wed, 20 Jun 2018 16:43:12 +0000 (10:43 -0600)]
Fix lack of closing ] in link.

Per afresh1 on #p5p.

3 years agoDocumenting epigraph
Sawyer X [Tue, 19 Jun 2018 21:16:50 +0000 (15:16 -0600)]
Documenting epigraph

3 years agoUpdate META files
Sawyer X [Tue, 19 Jun 2018 21:15:04 +0000 (15:15 -0600)]
Update META files

3 years agodisarm RC4 bump
Sawyer X [Tue, 19 Jun 2018 20:51:28 +0000 (14:51 -0600)]
disarm RC4 bump

3 years agoUpdate META files v5.28.0-RC4
Sawyer X [Tue, 19 Jun 2018 17:12:28 +0000 (11:12 -0600)]
Update META files

3 years agobump version to RC4
Sawyer X [Tue, 19 Jun 2018 17:12:16 +0000 (11:12 -0600)]
bump version to RC4

3 years agoAdd new release to perlhist
Sawyer X [Tue, 19 Jun 2018 17:11:27 +0000 (11:11 -0600)]
Add new release to perlhist

3 years agoUpdate perldelta for Archive::Tar 2.30
Sawyer X [Tue, 19 Jun 2018 15:41:03 +0000 (09:41 -0600)]
Update perldelta for Archive::Tar 2.30

3 years agoMerge remote-tracking branch 'origin/smoke-me/jkeenan/archive-tar-2.30' into release...
Sawyer X [Tue, 19 Jun 2018 15:36:48 +0000 (09:36 -0600)]
Merge remote-tracking branch 'origin/smoke-me/jkeenan/archive-tar-2.30' into release-5.28.0-RC4

3 years agoBump Module::CoreList
Sawyer X [Tue, 19 Jun 2018 15:34:18 +0000 (09:34 -0600)]
Bump Module::CoreList

3 years agoAdding epigraph for v5.28.0-RC3
Sawyer X [Tue, 19 Jun 2018 15:06:35 +0000 (09:06 -0600)]
Adding epigraph for v5.28.0-RC3

3 years agoSynch with CPAN: Archive::Tar v2.30.
Chris 'BinGOs' Williams [Tue, 19 Jun 2018 14:31:16 +0000 (08:31 -0600)]
Synch with CPAN: Archive::Tar v2.30.

From upstream commit message:

"Skip white_space test on Windows

"Windows will report that 'white_space ' and 'white_space' both
exist, which is obviously a 'feature'"

3 years agoMerge branch 'blead' of ssh://perl5.git.perl.org/perl into blead
Sawyer X [Tue, 19 Jun 2018 03:43:16 +0000 (21:43 -0600)]
Merge branch 'blead' of ssh://perl5.git.perl.org/perl into blead

3 years agoUpdate META files
Sawyer X [Tue, 19 Jun 2018 03:42:22 +0000 (21:42 -0600)]
Update META files

3 years agoStorable: check PERL_TEST_MEMORY before trying to allocate 2GB of memory
Tony Cook [Thu, 24 May 2018 05:07:00 +0000 (15:07 +1000)]
Storable: check PERL_TEST_MEMORY before trying to allocate 2GB of memory

3 years agodisarm RC3 bump
Sawyer X [Mon, 18 Jun 2018 22:48:29 +0000 (16:48 -0600)]
disarm RC3 bump

3 years agobump in perldelta too v5.28.0-RC3
Sawyer X [Mon, 18 Jun 2018 21:08:10 +0000 (15:08 -0600)]
bump in perldelta too

3 years agoBump Module::CoreList
Sawyer X [Mon, 18 Jun 2018 21:06:28 +0000 (15:06 -0600)]
Bump Module::CoreList

3 years agoUpdate META files
Sawyer X [Mon, 18 Jun 2018 20:29:38 +0000 (14:29 -0600)]
Update META files

3 years agobump version to RC3
Sawyer X [Mon, 18 Jun 2018 20:29:15 +0000 (14:29 -0600)]
bump version to RC3

3 years agoadd new release to perlhist
Sawyer X [Mon, 18 Jun 2018 20:28:38 +0000 (14:28 -0600)]
add new release to perlhist

3 years agoAdd last comment to perldelta
Sawyer X [Mon, 18 Jun 2018 20:07:58 +0000 (14:07 -0600)]
Add last comment to perldelta

3 years agoUpdate Module::CoreList for 5.28.0-RC3
Sawyer X [Mon, 18 Jun 2018 17:46:07 +0000 (11:46 -0600)]
Update Module::CoreList for 5.28.0-RC3

3 years agoUpdate epigraph
Sawyer X [Wed, 6 Jun 2018 22:09:30 +0000 (00:09 +0200)]
Update epigraph

3 years agobump Maintainers.pl entry for Archive-Tar
David Mitchell [Mon, 18 Jun 2018 13:29:09 +0000 (14:29 +0100)]
bump Maintainers.pl entry for Archive-Tar

2.26 -> 2.28 after recent pull.

3 years agoperldelta headings without full stops
Smylers [Thu, 7 Jun 2018 15:26:12 +0000 (16:26 +0100)]
perldelta headings without full stops

Most of the headings don't end with full stops (even when they are
complete sentences), so remove the full stops from the few that do, so
they all follow the same style

3 years agoClarify that /({...)/ is deprecated
Smylers [Thu, 7 Jun 2018 15:21:11 +0000 (16:21 +0100)]
Clarify that /({...)/ is deprecated

Previously this was just a noun phrase, describing the thing that is
deprecated. Turn that into a statement, explicitly saying it is
deprecated.

Admittedly, the noun phrase is in a section headed ‘Deprecations’, but
some of the items in the list are about changes to deprecations, and
everything else in the list is a full sentence, so make this be one too.

3 years agoDocument delete %hash{key} return value
Smylers [Thu, 7 Jun 2018 15:17:33 +0000 (16:17 +0100)]
Document delete %hash{key} return value

cc0776d64 introduced delete on key-value hash slices. That intuitively
returns a list of key- value pairs, which is two elements per specified
hash key. Update the docs to reflect this.

3 years agoPod fix: Escape / inside L</>
Smylers [Thu, 7 Jun 2018 15:06:28 +0000 (16:06 +0100)]
Pod fix: Escape / inside L</>

When linking to a section name that contains a literal slash, podchecker
complains.

In practice this isn't ambiguous (the first slash separates the page name
from the section name, and everything after that, including subsequent
slashes, must be the section name) and the link was working on MetaCpan.
But since podcheck complains, it seems safer to fix this.

3 years agoClarify key-value slices are of hashes
Smylers [Thu, 7 Jun 2018 15:05:40 +0000 (16:05 +0100)]
Clarify key-value slices are of hashes

For somebody reading the perldelta without context, make it clear that the
‘key/value’ slices that are mentioned are hash slices, with a link to
their documentation.

3 years agoUpdate Archive-Tar to CPAN version 2.28
David Mitchell [Mon, 18 Jun 2018 13:00:04 +0000 (14:00 +0100)]
Update Archive-Tar to CPAN version 2.28

  [DELTA]

+- fix creating file with trailing whitespace on filename - fixes 103279
+- allow archiving with absolute pathnames - fixes 97748
+- small POD fix
+- Speed up extract when archive contains lots of files
+- CVE-2018-12015 directory traversal vulnerability [RT#125523]

3 years agorun Porting/makemeta
David Mitchell [Wed, 6 Jun 2018 19:23:11 +0000 (20:23 +0100)]
run Porting/makemeta

Don't know why this needs doing, but t/porting/regen.t was failing:

not ok - Porting/makemeta META.json

and this seems to fix it.

3 years agodisarm RC2 bump
Sawyer X [Wed, 6 Jun 2018 12:35:11 +0000 (15:35 +0300)]
disarm RC2 bump

3 years agobump date v5.28.0-RC2
Sawyer X [Wed, 6 Jun 2018 06:24:34 +0000 (09:24 +0300)]
bump date

3 years agoRegen acknowledgement
Sawyer X [Wed, 6 Jun 2018 06:24:05 +0000 (09:24 +0300)]
Regen acknowledgement

3 years agoProperly bump Module::CoreList
Sawyer X [Wed, 6 Jun 2018 06:14:07 +0000 (09:14 +0300)]
Properly bump Module::CoreList

3 years agoCorrect date of release
Sawyer X [Wed, 6 Jun 2018 06:08:10 +0000 (09:08 +0300)]
Correct date of release

3 years agoBump again
Sawyer X [Wed, 6 Jun 2018 06:07:13 +0000 (09:07 +0300)]
Bump again

3 years agoFix new version in perlhist
Sawyer X [Tue, 5 Jun 2018 20:10:42 +0000 (23:10 +0300)]
Fix new version in perlhist

3 years agofix version numbers in perldelta's description
Vitali Peil [Tue, 5 Jun 2018 05:51:13 +0000 (07:51 +0200)]
fix version numbers in perldelta's description

3 years agoUpdate Module::CoreList for 5.28.0-RC2
Sawyer X [Tue, 5 Jun 2018 17:00:50 +0000 (20:00 +0300)]
Update Module::CoreList for 5.28.0-RC2

3 years agoUpdate META files
Sawyer X [Sat, 26 May 2018 14:10:13 +0000 (17:10 +0300)]
Update META files

3 years agobump version to RC2
Sawyer X [Sat, 26 May 2018 14:09:48 +0000 (17:09 +0300)]
bump version to RC2

3 years agoadd new release to perlhist
Sawyer X [Sat, 26 May 2018 14:05:43 +0000 (17:05 +0300)]
add new release to perlhist

3 years agoperldelta tweaks
David Mitchell [Tue, 29 May 2018 12:17:58 +0000 (13:17 +0100)]
perldelta tweaks

Improve some descriptions, eliminate some entries for changes which were
later reverted or for bugs which only appeared and were fixed within the
5.27.x development cycle; and wrap some long lines.

3 years agomore link to RT
SHIRAKATA Kentaro [Thu, 24 May 2018 19:49:16 +0000 (04:49 +0900)]
more link to RT

3 years agorevert perl_run() 0 -> 256 return mapping
David Mitchell [Mon, 28 May 2018 14:54:57 +0000 (15:54 +0100)]
revert perl_run() 0 -> 256 return mapping

RT #133220

This commit partially reverts v5.27.6-180-g0301e89953.

That commit changed the return values of perl_parse() and perl_run()
so that an exit(0) wouldn't return 0 (which indicates a normal finish)
and instead return 0x100, which a indicates non-normal return, but with
a value which if used as an 8-bit process exit value on UNIX, has the
modulo value of 0.

However, it turns out that perl_run() (via S_run_body()) does a my_exit(0)
rather than just running to completion. So it turns out that it's not
possible to distinguish between perl code finishing normally, and perl
code doing exit(0).

This broke code which embedded perl and expected perl_run() to return 0
on normal completion.

It may be possible to fix this by getting S_run_body() to not call
my_exit(0), but that's too unpredictable change while we're at -RC1.

So just revert the new perl_run() 0x100 behaviour for now.

4 years agoExcessively long line made t/porting/podcheck.t unhappy.
James E Keenan [Thu, 24 May 2018 19:42:35 +0000 (15:42 -0400)]
Excessively long line made t/porting/podcheck.t unhappy.

4 years agoUpdate information on which gcc versions are supported on Windows
Steve Hay [Thu, 24 May 2018 12:37:04 +0000 (13:37 +0100)]
Update information on which gcc versions are supported on Windows

See [perl #128631] (MinGW with runtimes >= 3.21 currently don't work) and
[perl #132955] (MinGW 3.4.5 and 4.7.2+ and MinGW64 x64 6.3.0+ currently
don't work in C++ mode).

4 years agofix Mingw GCC C++ build errors PL_inf/PL_nan
Daniel Dragan [Tue, 24 Apr 2018 18:12:46 +0000 (14:12 -0400)]
fix Mingw GCC C++ build errors PL_inf/PL_nan

Trying a USE_CPLUSPLUS=define build with dmake (USE_CPLUSPLUS not
implemented in GNUMakefile) causes the following error

---------
gcc -c -xc++ -I.\include -I. -I.. -DWIN32 -DPERLDLL -DPERL_CORE -s -O2 -fwrapv -
fno-strict-aliasing -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL -omini\globals.o  ..
\globals.c
In file included from ..\globals.c:32:0:
..\perl.h:6754:50: error: too many initializers for 'U8 [8] {aka unsigned char [
8]}'
 INFNAN_U8_NV_DECL PL_inf = { { LONGDBLINFBYTES } };
                                                  ^
..\perl.h:6790:50: error: too many initializers for 'U8 [8] {aka unsigned char [
8]}'
 INFNAN_U8_NV_DECL PL_nan = { { LONGDBLNANBYTES } };
                                                  ^
dmake:  Error code 129, while making 'mini\globals.o'
---------
in plain C mode builds, this error was just a warning and nobody paid
attention to it for a while
---------
gcc -c  -I.\include -I. -I.. -DWIN32 -DPERLDLL -DPERL_CORE -s -O2 -fwrapv -fno-s
trict-aliasing -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL -omini\globals.o  ..\glob
als.c
In file included from ..\globals.c:32:0:
..\perl.h:5432:42: warning: excess elements in array initializer
 #define INFNAN_U8_NV_DECL EXTCONST union { U8 u8[NVSIZE]; NV nv; }
                                          ^
..\perl.h:6754:1: note: in expansion of macro 'INFNAN_U8_NV_DECL'
 INFNAN_U8_NV_DECL PL_inf = { { LONGDBLINFBYTES } };
 ^
..\perl.h:5432:42: warning: (near initialization for 'PL_inf.u8')
 #define INFNAN_U8_NV_DECL EXTCONST union { U8 u8[NVSIZE]; NV nv; }
                                          ^
..\perl.h:6754:1: note: in expansion of macro 'INFNAN_U8_NV_DECL'
 INFNAN_U8_NV_DECL PL_inf = { { LONGDBLINFBYTES } };
 ^
..\perl.h:5432:42: warning: excess elements in array initializer
 #define INFNAN_U8_NV_DECL EXTCONST union { U8 u8[NVSIZE]; NV nv; }
                                          ^
-------------

Now on VC C++ build, LONGDBLINFBYTES is 8 bytes, as defined in
LONGDBLINFBYTES macro in config_H.vc, and for VC, "long double" is always
typedefed by the CC to "double", so there was no warning, but on GCC,
"long double" is the 80 bit/10 byte type and in config_H.gc the 12 byte
version of INF is inside LONGDBLINFBYTES macro. Because LONG_DOUBLESIZE
define was previously "8" because of makefile logic regardless of CC,

#  elif NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLINFBYTES)
INFNAN_U8_NV_DECL PL_inf = { { LONGDBLINFBYTES } };

was being hit on GCC, even though NVSIZE is 8 as it should be, but
LONGDBLINFBYTES was 12. Hence the warning. I didnt research why this
warning on GCC didn't cause test failures. Perhaps full perl recomputes
the correct initializer in config_sh.PL and doesn't rely on what was in the
miniperl initializer for PL_inf.

To fix things, always emit the correct value for LONG_DOUBLESIZE and dont
hardcode it at 8 for miniperl. 8 must stay for all VCs, and 12/16 is for
GCC. Although GNUMakefile doesn't support a USE_CPLUSPLUS build option,
it has provisons to support it one day. To keep things in sync, copy
miniperl config.h append changes from makefile.mk to GNUMakefile. Also
collapse 2 shell cmd lines in "ifeq ($(USE_LONG_DOUBLE),define)" to reduce
number of proc launches of cmd.exe by the maketool (perf issue).

Next C++ build issue.

APItest.xs: In function 'void XS_XS__APItest__Backrefs_Comctl32Version(Perl
Interpreter*, CV*)':
APItest.xs:6806:37: error: cast from 'LPSTR {aka char*}' to 'WORD {aka shor
t unsigned int}' loses precision [-fpermissive]
                                     MAKEINTRESOURCE(VS_FILE_INFO));
                                     ^
dmake:  Error code 129, while making 'APItest.o'

VS_FILE_INFO is internally "RT_VERSION" which is MAKEINTRESOURCE(16). The
output type of MAKEINTRESOURCE is a char *. GCC complains about casting
that char * back down to a WORD (aka short). Put in a size_t used for
pointer arithimitic to silence the error. Another option is to
remove the outer MAKEINTRESOURCE in APItest.xs since RT_VERSION has
MAKEINTRESOURCE internally, but that assumes implementation details of
headers so pick the less dependency on header design option.

4 years agoAdd link to release for epigraph
Sawyer X [Wed, 23 May 2018 13:47:46 +0000 (16:47 +0300)]
Add link to release for epigraph

4 years agoperldelta: Clarify we refer to perl -i in in-place editing
Sawyer X [Wed, 23 May 2018 13:37:37 +0000 (16:37 +0300)]
perldelta: Clarify we refer to perl -i in in-place editing

4 years agoperldelta: Remove mention of reverted change
Sawyer X [Wed, 23 May 2018 13:35:37 +0000 (16:35 +0300)]
perldelta: Remove mention of reverted change

4 years agoperldelta: convert all RT ticket references to links
Aaron Crane [Tue, 22 May 2018 08:23:58 +0000 (09:23 +0100)]
perldelta: convert all RT ticket references to links

4 years agoMinor edits to perldelta
Aaron Crane [Tue, 22 May 2018 08:12:47 +0000 (09:12 +0100)]
Minor edits to perldelta

- Delete some mentions of bugs that were both introduced and fixed in the
  5.27.x series

- Fix a POD infelicity

- Add one word for clarity

4 years agoFixes for perldelta
Karl Williamson [Mon, 21 May 2018 19:26:58 +0000 (13:26 -0600)]
Fixes for perldelta

This commit makes some changes to perldelta.

1) Reorders some sections so that a new feature is presented before
being referred to.

2) Typos

3) Confused wording

4) =head text should all be on the same line

5) script runs are experimental

4 years agoupdate with perl527*delta removal
David Mitchell [Mon, 21 May 2018 15:26:10 +0000 (16:26 +0100)]
update with perl527*delta removal

Update a few build files so that they know that the perl527*delta.pod
files no longer exist.

4 years agoRemove 5.27.x perldelta files
Sawyer X [Mon, 21 May 2018 13:54:21 +0000 (16:54 +0300)]
Remove 5.27.x perldelta files

4 years agoRegen META files
Sawyer X [Mon, 21 May 2018 13:42:02 +0000 (16:42 +0300)]
Regen META files

4 years agoAdding epigraph, correct previous
Sawyer X [Mon, 21 May 2018 13:25:41 +0000 (16:25 +0300)]
Adding epigraph, correct previous

4 years agodisarm RC1 bump
Sawyer X [Mon, 21 May 2018 12:52:19 +0000 (15:52 +0300)]
disarm RC1 bump

4 years agoUpdate META files v5.28.0-RC1
Sawyer X [Mon, 21 May 2018 10:50:38 +0000 (13:50 +0300)]
Update META files

4 years agobump version to RC1
Sawyer X [Mon, 21 May 2018 10:50:13 +0000 (13:50 +0300)]
bump version to RC1

4 years agoUpdate perlhist for 5.28.0-RC1
Sawyer X [Mon, 21 May 2018 10:49:21 +0000 (13:49 +0300)]
Update perlhist for 5.28.0-RC1

4 years agoFinally
Sawyer X [Mon, 21 May 2018 10:44:16 +0000 (13:44 +0300)]
Finally

4 years agoFinalize perldelta
Sawyer X [Mon, 21 May 2018 09:19:57 +0000 (12:19 +0300)]
Finalize perldelta

4 years agoUpdate Module::CoreList for 5.28.0
Sawyer X [Mon, 21 May 2018 08:47:26 +0000 (11:47 +0300)]
Update Module::CoreList for 5.28.0

4 years agoRemove symlink and MANIFEST entry
Sawyer X [Sun, 20 May 2018 16:08:46 +0000 (19:08 +0300)]
Remove symlink and MANIFEST entry

4 years agoFixes for 5.28.0
Sawyer X [Sun, 20 May 2018 15:38:08 +0000 (18:38 +0300)]
Fixes for 5.28.0

4 years agoMerged all perldeltas for 5.28.0
Sawyer X [Sun, 20 May 2018 15:37:59 +0000 (18:37 +0300)]
Merged all perldeltas for 5.28.0

4 years agoUpdate Module::CoreList for 5.28.0-RC1
Sawyer X [Mon, 14 May 2018 20:48:21 +0000 (23:48 +0300)]
Update Module::CoreList for 5.28.0-RC1

4 years agoUpdate perlpolicy for 5.28.0
Sawyer X [Mon, 14 May 2018 20:36:48 +0000 (23:36 +0300)]
Update perlpolicy for 5.28.0

4 years agoregcomp.c: White space only
Karl Williamson [Sun, 13 May 2018 03:58:56 +0000 (21:58 -0600)]
regcomp.c: White space only

Indent code that now has a newly formed block around it.

4 years agoregcomp.c: Avoid a panic on malformed qr/\N{..}/i
Karl Williamson [Sun, 13 May 2018 03:40:02 +0000 (21:40 -0600)]
regcomp.c: Avoid a panic on malformed qr/\N{..}/i

Input constructs that expand to more than one character are handled very
very specially when they occur within a bracketed character class.  What
happens effectively is that they are removed from the class and parsed
separately, using the regular code in regcomp.c to generate something
like a trie for them.  The other characters within the class are handled
normally.

The specially handled stuff is parsed from a separate string.  In the
case where that stuff is of the form \N{U+...}, I neglected to
adequately consider that the syntax could trigger an error.  When such
an error is raised, it can violate our assumptions about the state of
things, and lead to a panic.

THe code actually parses the construct twice.  The first time while
deciding if this expands to multiple characters (so that it can be
separated out), and the second time to actually figure out and return
the expansion.  This commit fixes the bug by adding error checking
during the first pass.  Previously, the minimal amount of work was done
to be able to find the count of characters in the expansion.  Now, more
work is done to do the checking, as we go along with the counting.  This
actually results in less special case code needing to be executed, so
there is a net code removal from this commit.

4 years agoPATCH: [perl #133194] Heap buffer overflow
Karl Williamson [Sun, 13 May 2018 04:20:33 +0000 (22:20 -0600)]
PATCH: [perl #133194] Heap buffer overflow

On debugging builds, the code in the ticket instead fails an assert.  I
thought I had previous failures figured out, but it turns out I was
wrong.  To prevent potential security failures by going ahead and
printing memory known to be outside what we are expecting on
non-debugging builds, instead panic.

This doesn't fix the underlying problem of how we came to be trying to
output bad stuff, but it keeps all such cases from being security
bugs.

4 years agoPATCH: [perl #133185] Infinite loop in qr//
Karl Williamson [Tue, 8 May 2018 18:13:18 +0000 (12:13 -0600)]
PATCH: [perl #133185] Infinite loop in qr//

This loop was inadvertently introduced as part of patches to fix
(perl #132227 CVE-2018-6797] heap-buffer-overflow".  The commit in 5.27
responsible was f8fb8615ddc5a80e3bbd4386a8914497f921b62d.

To be vulnerable, the pattern must start out as /d (hence no use 5.012
or higher), and then there must be something that implicitly forces /u
(which the \pp does in the test case added by this patch), and then
(?aa), and then the code point \xDF.  (German Sharp S).  The /i must be
in effect by the time the DF is encountered, but it needn't come in the
(?aa) which the test does.

The problem is that the conditional that is testing that we switched
away from /d rules is assuming that this happened during the
construction of the current EXACTFish node.  The comments I wrote
indicate this assumption.  But this example shows that the switch can
come before this node started getting constructed, and so it loops.

The patch explicitly saves the state at the beginning of this node's
construction, and only retries if it changed during that construction.
Therefore the next time through, it will see that it hasn't changed
since the previous time, and won't loop.

4 years agoPATCH: [perl # 133179] heap-buffer-overflow write
Karl Williamson [Sun, 6 May 2018 08:27:01 +0000 (02:27 -0600)]
PATCH: [perl # 133179] heap-buffer-overflow write

The code did not consider the case of a trailing slash with no
denominator following it.  Simply add a check.

4 years agoWork around for [perl $133136]
Karl Williamson [Tue, 1 May 2018 17:51:19 +0000 (11:51 -0600)]
Work around for [perl $133136]

This commit is a blatant kludge to work around a failing test in
Lexical::SealRequireHints.  The test is wrong, checking for an internal
detail that has changed.

This commit adds a conditional for the exact input that's failing, and
if found, uses the old method, so the test passes.

The failing input is the regex pattern

    foo\p{Alnum}

'foo' is unlikely to be found in practice outside of .t files, and
this particular pattern rarely even in those.  So this should not slow
down real production code.

4 years agoRevert "set PERL_EXIT_DESTRUCT_END in all embeddings"
David Mitchell [Wed, 9 May 2018 09:54:55 +0000 (10:54 +0100)]
Revert "set PERL_EXIT_DESTRUCT_END in all embeddings"

This reverts commit 8e920bd341e241f50a74dbf8aa343319f204e200.
Also skip the tests in t/op/blocks.t

RT #132863

8e920bd341 sets the PERL_EXIT_DESTRUCT_END flag on non-UNIXy platforms,
like is already done on UNIXy platforms.  This makes things like
BEGIN { exit(1) } call END blocks on those platforms (like they already
do on UNIX).

But it caused problems with win32 pseudo-forks, so revert for 5.28
and re-address the issues sometime later.

4 years agot/op/blocks.t: indent 6 tests in a new skip block
David Mitchell [Wed, 9 May 2018 12:52:50 +0000 (13:52 +0100)]
t/op/blocks.t: indent 6 tests in a new skip block

Apart from the whitespace change, this just wraps 6 tests in
a SKIP: { ... } block which isn't (yet) used.

4 years agot/op/blocks.t: consolidate VMS-skips together
David Mitchell [Wed, 9 May 2018 12:49:14 +0000 (13:49 +0100)]
t/op/blocks.t: consolidate VMS-skips together

Put the three tests skipped under VMS together into a single SKIP
block rather than 3 separate skips.

As well as being tidier, as a side effect, it makes 6 tests contiguous
that are shortly to be skipped under win32,

4 years agot/op/blocks.t: add some whitespace
David Mitchell [Wed, 9 May 2018 12:35:42 +0000 (13:35 +0100)]
t/op/blocks.t: add some whitespace

Makes the tests a bit easier to read.

4 years agoperlretut correction: 'qw' should be inside parens
Gene Sullivan [Sat, 5 May 2018 02:17:25 +0000 (22:17 -0400)]
perlretut correction: 'qw' should be inside parens

RT #133172

4 years agofix build failure with recent glibc
David Mitchell [Fri, 11 May 2018 07:03:42 +0000 (08:03 +0100)]
fix build failure with recent glibc

RT #133184

pp_crypt() directly manipulates a field inside 'struct crypt_data' to work
around a bug in an ancient glibc version from circa 2002. New glibc
releases don't have this field so perl fails to compile. Make the hack
conditional on glibc version.

Stolen from a patch to the Fedora 28 distribution.

4 years agoPATCH: [perl #133175] script run free from wrong pool panic
Karl Williamson [Sat, 5 May 2018 03:26:31 +0000 (21:26 -0600)]
PATCH: [perl #133175] script run free from wrong pool panic

Setting the pointer to NULL after freeing signals the code in later
interations that it has been freed already

No test is added because it could become outdated (not testing what it
was designed to test) with a new Unicode version changing the underlying
data.  This bug was discovered by testing on Unicode 7.0, and the data
changed so that there was not a problem by Unicode 10.0.

4 years agofix typo in Artistic
David Mitchell [Mon, 7 May 2018 16:44:02 +0000 (17:44 +0100)]
fix typo in Artistic

RT #133120

Spotted by Alexandr Savca

Change approved by Makoto Nozaki of TPF

4 years agosprintf2.t: mark TODO bad denorm values under g++
David Mitchell [Tue, 1 May 2018 14:28:49 +0000 (15:28 +0100)]
sprintf2.t: mark TODO bad denorm values under g++

Some t/op/sprintf2.t tests were failing under g++. This is due the perl
toker interpreting very small literal hex floating pointers as 0 rather
than as a subnormal value.

For example:

    perl -le'print "bad" if 0x1.fffffffffffffp-1022 == 0.0'

This breaks some of the sprintf2.t tests, so mark them TODO them if the
literal value evaluates to zero.

Note that this is a bug in the toker/g++/glibc rather than sprintf.

The issue is due to the use of pow() in scan_num():

under gcc and plain g++, pow(2.0, -1074) returns the smallest denorm
number; however, under 'g++ -ansi', it returns 0.0.

4 years agoEnsure temp directories are cleaned up.
James E Keenan [Thu, 26 Apr 2018 20:51:39 +0000 (16:51 -0400)]
Ensure temp directories are cleaned up.

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

Thread:
https://www.nntp.perl.org/group/perl.perl5.porters/2018/04/msg250757.html

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

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

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

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

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

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

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

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

[RT #133141]

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

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

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

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

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

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

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

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

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

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

This reverts commit f6107ca24b4cf22dcf7fd69d65612ad718c48fca.

See RT #132142.

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

This is commit 2 of 2.

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

This reverts commit 5bad3c4f3a4515aaa622eecdf6f5a84fcaff7ed9.

See RT #132142.

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

This is commit 1 of 2.

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

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

RT #132955

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

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