This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
5 years agoremove duplicate environment variables from environ
Tony Cook [Wed, 27 Jan 2016 00:52:15 +0000 (11:52 +1100)]
remove duplicate environment variables from environ

If we see duplicate environment variables while iterating over
environ[]:

a) make sure we use the same value in %ENV that getenv() returns.

Previously on a duplicate, %ENV would have the last entry for the name
from environ[], but a typical getenv() would return the first entry.

Rather than assuming all getenv() implementations return the first entry
explicitly call getenv() to ensure they agree.

b) remove duplicate entries from environ

Previously if there was a duplicate definition for a name in environ[]
setting that name in %ENV could result in an unsafe value being passed
to a child process, so ensure environ[] has no duplicates.

CVE-2016-2381

5 years agoperldelta: Fix typo
Karl Williamson [Tue, 1 Mar 2016 04:12:59 +0000 (21:12 -0700)]
perldelta: Fix typo

Spotted by Andrew Rodland

5 years agore/regexp_unicode_prop.t: Fix loop statement
Karl Williamson [Tue, 1 Mar 2016 04:12:59 +0000 (21:12 -0700)]
re/regexp_unicode_prop.t: Fix loop statement

This was doing an extra shift, which doesn't matter currently because
there's only one element in the array, but could cause future problems.

5 years agoregexp_unicode_prop.t: Clarify comment
Karl Williamson [Tue, 1 Mar 2016 04:12:12 +0000 (21:12 -0700)]
regexp_unicode_prop.t: Clarify comment

5 years agoFix /\p{pkg::User-defined}/i
Karl Williamson [Mon, 15 Feb 2016 18:25:35 +0000 (11:25 -0700)]
Fix /\p{pkg::User-defined}/i

Prior to this commit, the parsing code got confused if a user-defined
property whose definition was not known at pattern compilation time, was
specified with an explicit package name, under /i.

5 years ago[perl #127635] s///r with -DPERL_NO_COW attempts to modify source SV
Tony Cook [Mon, 29 Feb 2016 23:41:46 +0000 (10:41 +1100)]
[perl #127635] s///r with -DPERL_NO_COW attempts to modify source SV

based on work done by bulk88, per his notes below:

I found pp_subst with a -DPERL_NO_COW build on an experimental perl branch
would die in ../dist/SelfLoader/t/03taint.t in this line
"my $file = __FILE__ =~ s/[\w.]+\z/01SelfLoader.t/r;" with a attempt to
modify since sv_force_normal_flags checks for readonlyness. The
-DPERL_NO_COW exclusive logic seems faulty, since the COW branch right
above stores the cow status and doesn't call sv_force_normal_flags until
it actually wants to modify the source SV, and pp_subst wont modify the
source SV if PMf_NONDESTRUCT is on.

So fix the die by only de-COWing if !PMf_NONDESTRUCT. Do not deCOW the
source SV if PMf_NONDESTRUCT. The
"my $file = __FILE__ =~ s/[\w.]+\z/01SelfLoader.t/r;" fatal die can not be
reproduced in blead perl with -DPERL_NO_COW, only in my experimental branch
so I rewrote the test to use a const sub that is folded to a
HEK COW RO SV * instead of the __FILE__ token which is not a HEK COW on
blead perl. The subst.t test only fails if perl is compiled with
-DPERL_NO_COW. To avoid an extra !(rpm->op_pmflags & PMf_NONDESTRUCT) check
on a NO_COW build, restructure the logic so
!(rpm->op_pmflags & PMf_NONDESTRUCT) is tested only once. Filed as
[perl #127635].

5 years agoScalar-List-Utils customization bump
Jarkko Hietaniemi [Mon, 29 Feb 2016 13:47:54 +0000 (08:47 -0500)]
Scalar-List-Utils customization bump

5 years agoScalar-List-Utils version bump
Jarkko Hietaniemi [Mon, 29 Feb 2016 13:43:51 +0000 (08:43 -0500)]
Scalar-List-Utils version bump

5 years agoproduct() with zero IV crash/hang
Jarkko Hietaniemi [Mon, 29 Feb 2016 13:39:02 +0000 (08:39 -0500)]
product() with zero IV crash/hang

CID 104785: Division or modulo by zero (DIVIDE_BY_ZERO)
238. divide_by_zero: In expression 9223372036854775807L / retiv, division by expression retiv which may be zero has undefined behavior.
215                if(!SvNOK(sv) && SvIOK(sv) && (SvIV(sv) < IV_MAX / retiv)) {

Cherry-pick of the changes in
https://rt.cpan.org/Public/Bug/Display.html?id=105415

5 years agoSocket customization bump
Jarkko Hietaniemi [Mon, 29 Feb 2016 12:16:59 +0000 (07:16 -0500)]
Socket customization bump

5 years agoSocket version bump
Jarkko Hietaniemi [Mon, 29 Feb 2016 12:15:08 +0000 (07:15 -0500)]
Socket version bump

5 years agoCheck for max length before derefing by length.
Jarkko Hietaniemi [Mon, 29 Feb 2016 11:50:58 +0000 (06:50 -0500)]
Check for max length before derefing by length.

Coverity CID 135025 (#1 of 1): Out-of-bounds read (OVERRUN)
29. overrun-local: Overrunning array addr.sun_path of 108 bytes at byte offset 108 using index addr_len (which evaluates to 108).
 864                for (addr_len = 0; addr.sun_path[addr_len]
 28. incr: Incrementing addr_len. The value of addr_len may now be up to 108.
 865                     && addr_len < maxlen; addr_len++);

Reported upstream as

https://rt.cpan.org/Ticket/Display.html?id=111707

5 years agoteach makedef.pl an alternate macro for PERL_COPY_ON_WRITE
Daniel Dragan [Mon, 29 Feb 2016 03:44:18 +0000 (22:44 -0500)]
teach makedef.pl an alternate macro for PERL_COPY_ON_WRITE

otherwise a -DPERL_NO_COW perl win32 build fails during linking perl523.dll
with missing Perl_sv_setsv_cow

5 years agoperlport: use italics instead of colon in "don't":s (RT #127627)
Lukas Mai [Sun, 28 Feb 2016 22:10:50 +0000 (23:10 +0100)]
perlport: use italics instead of colon in "don't":s (RT #127627)

5 years agoImprove wording of perldelta entry for ae146f5496e
Dagfinn Ilmari Mannsåker [Mon, 29 Feb 2016 13:55:41 +0000 (13:55 +0000)]
Improve wording of perldelta entry for ae146f5496e

5 years agoAdjust callsites that use UTF8SKIP without checking UTF
Alex Vandiver [Mon, 23 Mar 2015 03:44:11 +0000 (23:44 -0400)]
Adjust callsites that use UTF8SKIP without checking UTF

Assuming UTF-8 semantics and advancing character-by-character when 'use
utf8' is not enabled is not as problematic as the inverse.  However,
properly UTF8SKIP should only be used when UTF8 semantics are explicitly
asked for.

Change the three occurrences of UTF8SKIP that are not protected by UTF
checks.

5 years agoperldelta for ae146f5496e
Tony Cook [Sun, 28 Feb 2016 22:59:16 +0000 (09:59 +1100)]
perldelta for ae146f5496e

5 years ago[perl #127584] using Win32 32b gmake with 64b gcc caused wrong archname
Daniel Dragan [Sun, 28 Feb 2016 22:52:56 +0000 (09:52 +1100)]
[perl #127584] using Win32 32b gmake with 64b gcc caused wrong archname

Using a 32 bit Win32 gmake, with a GCC that produces 64 bit binaries, made
a perl with PTRSIZE 64 bits, and 64 bit machine code, but archname IDed
that build as "x86" not "x64", which is very wrong. Perl's
win32/GNUMakefile autodetects the bitness of the GCC and sets things up
accordingly. Fixes [perl #127584]. This bug might be a regression
introduced in commit 745dedb9b5 or the GNUMakefile parallel build branch.

5 years agoUpgrade to IPC-SysV 2.06.
Jarkko Hietaniemi [Sun, 28 Feb 2016 22:35:33 +0000 (17:35 -0500)]
Upgrade to IPC-SysV 2.06.

Fixing an oopsie of yours truly from 2.05.

5 years agostatic funcs in HiRes.xs
Daniel Dragan [Fri, 26 Feb 2016 20:35:28 +0000 (15:35 -0500)]
static funcs in HiRes.xs

Less indirection on ELF.

5 years ago[perl #127624] corelist: wrong Digest::SHA version in 5.18.4
Chris 'BinGOs' Williams [Sun, 28 Feb 2016 15:53:56 +0000 (15:53 +0000)]
[perl #127624] corelist: wrong Digest::SHA version in 5.18.4

A bit of sleuthing showed that it was actually version bumped for
the v5.18.3 release.

Also noticed that Config hadn't been updated as well, sorted that
out too.

5 years agoregcomp.c: Use less peak memory
Karl Williamson [Sat, 27 Feb 2016 22:07:09 +0000 (15:07 -0700)]
regcomp.c: Use less peak memory

This continues the process started in
accb4364d92e26c20e6a538fc04d1af52a8b94e2 of lowering memory use by not
creating unnecessary mortal SVs.

This changes the inversion union and intersection functions to avoid
entirely the creation of new mortals.

5 years agoregcomp.c: Modify an assert
Karl Williamson [Sat, 27 Feb 2016 22:05:09 +0000 (15:05 -0700)]
regcomp.c: Modify an assert

This newly-added assert could fail, but hasn't so far.  Fix it.

5 years agoregcomp.c: Avoid an unnecessary mortal SV
Karl Williamson [Sat, 27 Feb 2016 22:01:43 +0000 (15:01 -0700)]
regcomp.c: Avoid an unnecessary mortal SV

In some paths,  an SV was created mortal, and immediately thrown away.

5 years agoregcomp.c: Improve free-ing up unused inversion list space
Karl Williamson [Sat, 27 Feb 2016 21:59:47 +0000 (14:59 -0700)]
regcomp.c: Improve free-ing up unused inversion list space

The invlist_trim() function wasn't freeing up space if the new space
needed was small.  This now frees up all but the required minimum.

5 years agoregcomp.c: Add new static inline convenience function
Karl Williamson [Sat, 27 Feb 2016 20:54:51 +0000 (13:54 -0700)]
regcomp.c: Add new static inline convenience function

5 years agoregcomp.c: Change variable names, white-space
Karl Williamson [Wed, 24 Feb 2016 17:06:34 +0000 (10:06 -0700)]
regcomp.c: Change variable names, white-space

A future commit will make more sense if these names are changed.  This
reindents some code so that it  doesn't overflow 79 columns

5 years agoregcomp.c: Change name of static function
Karl Williamson [Sat, 27 Feb 2016 19:36:37 +0000 (12:36 -0700)]
regcomp.c: Change name of static function

I found myself using this function, forgetting that it zapped one of the
parameters, so change the name so that can't be forgotten.

5 years agoperlfunc overhaul
Lukas Mai [Sat, 27 Feb 2016 04:17:57 +0000 (05:17 +0100)]
perlfunc overhaul

- remove trailing whitespace
- consistently refer to builtins as C<foo>, not foo() or C<foo()>
- hyperlink each C<foo> builtin to its section in perlfunc
- replace some occurrences of -w with a reference to the warnings pragma
- refer to listy comma as "list concatenation" because that's what it
  does
- consistently hyperlink references to external programs (L<touch(1)>),
  system calls (L<fork(2)>), and library functions (L<fdopen(3)>)
- hyperlink variables to their section in perlvar
- hyperlink the names of modules/pragmas
- hyperlink names of functions provided by modules (where possible)
- consistently use "pragmas", not "pragmata" (there were only two of
  those)
- use the same wording for all conditional builtins / features
- -T and -B are file tests, not switches
- remove "see L</open>" (regarding the ':encoding' layer) from
  description of binmode because I don't see why it was there
- refer to variables as C<$foo>, not $foo
- hyperlink some error messages to perldiag
- remove & from subroutine calls
- grammar: write "if X, Y" with a comma and "Y if X" without
- use 'my' in examples when introducing new variables
- 'while (', not 'while('
- don't capitalize the next word after a semicolon
- consistently start error messages (die/warn) with "Can't" (not
  "can't", "Cannot", or "cannot")
- replace bareword filehandles by normal variables in examples
- add missing ')'
- fix module names: IPC::SysV::Msg -> IPC::Msg, IPC::SysV::Semaphore ->
  IPC::Semaphore
- 'open': replace note about binmode with equivalent paragraph from
  'binmode' (the one in 'open' claimed unix systems don't need binmode,
  which is not true with encodings)
- 'open': delete overly clever example of generating filehandle names in
  a recursive function (this is a non-issue with lexical filehandles)
- 'open': instead of running 'perl -V' and looking for the useperlio
  line, you can just run 'perl -V:useperlio'
- 'open': mention shell feature of 'yourscript.pl <( other command )',
  which makes the only remaining use of 2-arg open redundant
- 'open': sysopen uses different modes than open; they're not "subtly
  different" and there's no "may" about it
- 'open': use $fh->autoflush(1) instead of select/$| dance (especially
  since the example already loads IO::Handle for no reason)
- 'printf': remove garbled text ("Look for this throught pod")
- change "use locale 'not_characters'" to the correct "use locale
  ':not_characters'"
- (hopefully) fix inconsistent use of "real filehandle"; use "bareword
  filehandle" instead to distinguish from scalar variables / globrefs
- ":encoding" is a layer, not a pragma
- 'readline': actually use readline in examples
- ?...? is no longer valid; use m?...? instead
- 'sort': whether the algorithm is stable has no effect on runtime
  complexity, so "That algorithm was not stable, so I<could> go
  quadratic" is nonsense
- 'sort': declaring $a/$b as lexicals is an error regardless of strict
- 'sysopen': as far as I can tell the note about depending on fdopen()
  is only true for non-PerlIO builds
- 'use': add an example of what 'use Module VERSION' expands to
- add 'select FILEHANDLE' to filehandle related functions

Also touch ext/Pod-Functions/Functions_pm.PL to make it parse
L<C<foo>|...> in the overview paragraphs.

And teach t/porting/podcheck.t about a ton of man pages and some
external modules.

5 years agoregcomp.c: Add missing 'STATIC'
Karl Williamson [Fri, 26 Feb 2016 23:41:11 +0000 (16:41 -0700)]
regcomp.c: Add missing 'STATIC'

5 years agoFix regex failures on big-endian systems
Karl Williamson [Fri, 26 Feb 2016 20:57:10 +0000 (13:57 -0700)]
Fix regex failures on big-endian systems

Commit accb4364d92e26c20e6a538fc04d1af52a8b94e2 caused regexes to fail
on big-endian systems.  It was because I used SvCUR where I should have
been using SvLEN, and was overwriting the final byte of real data with
0, which didn't matter as long as that byte was 0, which in our smokes
on litlle-endian systems, it was.

Further clarification is that inversion lists are stored as UV*, whereas
the scalar handling code is expecting char*.  By casting, it all works
out, except that the final byte is kept as a single char NUL.  I was
trying to write that final byte as a byte, but by using SvCUR, I was
getting a byte in one of the UVs.  With small numbers on a little-endian
system, that byte will be 0 anyway, but not on a big-endian one.

5 years agoperlvar: hyperlink from $^D to perlrun/-D
Lukas Mai [Wed, 24 Feb 2016 23:59:41 +0000 (00:59 +0100)]
perlvar: hyperlink from $^D to perlrun/-D

5 years agopodcheck.t: expand POD sequences in L</...> section names
Lukas Mai [Thu, 25 Feb 2016 02:48:48 +0000 (03:48 +0100)]
podcheck.t: expand POD sequences in L</...> section names

5 years agoFix perldoc -f sleep to use $SIG{ALRM} instead of $SIG{ALARM}.
Matthew Horsfall [Wed, 24 Feb 2016 20:06:38 +0000 (15:06 -0500)]
Fix perldoc -f sleep to use $SIG{ALRM} instead of $SIG{ALARM}.

5 years agoUse less memory in compiling regexes
Karl Williamson [Tue, 23 Feb 2016 21:04:19 +0000 (14:04 -0700)]
Use less memory in compiling regexes

This is at least a partial patch for [perl #127392], cutting the maximum
memory used on my box from around 8600kB to 7800kB.  For [perl #127568],
which has been merged into #127392, the savings are even larger, about
37%

Previously a large number of large mortal SVs could be created while
compiling a single regex pattern, and their accumulated memory quickly
added up.  This changes things to not use so many mortals.

5 years agoregcomp.c: Guard against corrupting inversion list SV
Karl Williamson [Tue, 23 Feb 2016 21:00:23 +0000 (14:00 -0700)]
regcomp.c: Guard against corrupting inversion list SV

I don't know of any cases where this happens, but in working on the next
commit I triggered a problem with shrinking an inversion list so much
that the required 0 UV at the beginning was freed.

5 years agosilence warning in Win32CORE
Daniel Dragan [Sun, 21 Feb 2016 17:28:14 +0000 (12:28 -0500)]
silence warning in Win32CORE

Win32CORE.c: In function ‘boot_Win32CORE’:
../../XSUB.h:127:43: warning: unused parameter ‘cv’ [-Wunused-parameter]

5 years ago[perl #127386] clarify that exit in the die pseudo-code is perl's exit
Tony Cook [Tue, 23 Feb 2016 04:09:39 +0000 (15:09 +1100)]
[perl #127386] clarify that exit in the die pseudo-code is perl's exit

5 years agoM-CL sync with what tis is on CPAN
Chris 'BinGOs' Williams [Tue, 23 Feb 2016 00:44:08 +0000 (00:44 +0000)]
M-CL sync with what tis is on CPAN

5 years agorelease schedule: Sawyer to release October 2016
Ricardo Signes [Sun, 21 Feb 2016 21:59:17 +0000 (08:59 +1100)]
release schedule: Sawyer to release October 2016

5 years agoMerge branch 'blead' of ssh://perl5.git.perl.org/perl into blead
Sawyer X [Sun, 21 Feb 2016 16:51:25 +0000 (17:51 +0100)]
Merge branch 'blead' of ssh://perl5.git.perl.org/perl into blead

5 years agoMore updates to Module::CoreList:
Sawyer X [Sun, 21 Feb 2016 13:02:27 +0000 (14:02 +0100)]
More updates to Module::CoreList:

I hope I got this right (I probably didn't though). The release
version was 20160121, not 20160220 or 20160221, so I'm not really
sure what's going on. Of course, with Module::CoreList I'm rarely
sure.

Still all tests pass and the world hasn't exploded yet, as far
as I know.

If you find a problem with this, I would appreciate a fix, but
also to ping me and tell me what I did wrong. I promise to update
the release checklist with it.

Thanks!

5 years agoupdate Module::CoreList and bump version
Sawyer X [Sun, 21 Feb 2016 12:36:10 +0000 (13:36 +0100)]
update Module::CoreList and bump version

5 years agot/re/pat_advanced.t: Test for [#perl 126886]
Karl Williamson [Sun, 21 Feb 2016 01:29:25 +0000 (18:29 -0700)]
t/re/pat_advanced.t: Test for [#perl 126886]

This was fixed by cfbef7dc3bfb89e4ed2c00ea9c9e3bcfd0b170fd

5 years agobump version to 5.23.9
Sawyer X [Sat, 20 Feb 2016 22:51:37 +0000 (23:51 +0100)]
bump version to 5.23.9

5 years agonew perldelta for 5.23.9
Sawyer X [Sat, 20 Feb 2016 22:39:02 +0000 (23:39 +0100)]
new perldelta for 5.23.9

5 years agoupdate 5.23.8 as done on release schedule
Sawyer X [Sat, 20 Feb 2016 22:21:58 +0000 (23:21 +0100)]
update 5.23.8 as done on release schedule

5 years agoadd 5.23.8 epigraph
Sawyer X [Sat, 20 Feb 2016 22:21:11 +0000 (23:21 +0100)]
add 5.23.8 epigraph

5 years agoMerge branch 'release-5.23.8' into blead
Sawyer X [Sat, 20 Feb 2016 22:17:07 +0000 (23:17 +0100)]
Merge branch 'release-5.23.8' into blead

5 years agoadd new release to perlhist v5.23.8
Sawyer X [Sat, 20 Feb 2016 20:09:58 +0000 (21:09 +0100)]
add new release to perlhist

5 years agoTypos, POD errors, etc. origin/release-5.23.8
Sawyer X [Sat, 20 Feb 2016 19:46:45 +0000 (20:46 +0100)]
Typos, POD errors, etc.

5 years agoUpdate perldelta module versions (Porting/corelist-perldelta.pl)
Sawyer X [Sat, 20 Feb 2016 19:22:02 +0000 (20:22 +0100)]
Update perldelta module versions (Porting/corelist-perldelta.pl)

5 years agoupdate Module::CoreList (Porting/corelist.pl)
Sawyer X [Sat, 20 Feb 2016 18:52:03 +0000 (19:52 +0100)]
update Module::CoreList (Porting/corelist.pl)

5 years agocleanup perldelta
Sawyer X [Sat, 20 Feb 2016 17:22:33 +0000 (18:22 +0100)]
cleanup perldelta

5 years agoDocument 38e3b24
Sawyer X [Sat, 20 Feb 2016 14:31:02 +0000 (15:31 +0100)]
Document 38e3b24

5 years agoDocument e57270be442bfaa9dc23eebd67485e5a806b44e3:
Sawyer X [Fri, 19 Feb 2016 23:20:38 +0000 (00:20 +0100)]
Document e57270be442bfaa9dc23eebd67485e5a806b44e3:

I wasn't sure where or how much of it to document, but it seems
like it's important, and this relating to permissions not being
removed, I consider it security-related. This is similiar to what
the original Debian ticket that relates to it mentioned.

I've cut Niko's text a bit shorter, taken from the commit message
itself.

5 years agoDocument eba98284740b799def26803ebac340aaa8930437
Sawyer X [Thu, 18 Feb 2016 16:30:07 +0000 (17:30 +0100)]
Document eba98284740b799def26803ebac340aaa8930437

5 years agoUpdate perldelta.pod:
Sawyer X [Wed, 17 Feb 2016 18:15:58 +0000 (19:15 +0100)]
Update perldelta.pod:

This includes most changes I've noticed. I ran through all
commits since the last commit Stevan did. There are some commits
there which I haven't reflect and not sure whether they were,
but I will take that up with their respected authors.

5 years agoAdd assert(matches_string).
Jarkko Hietaniemi [Sat, 20 Feb 2016 13:49:04 +0000 (08:49 -0500)]
Add assert(matches_string).

Coverity CID #135728: Explicit null dereferenced (FORWARD_NULL)

Coverity sees an execution path that leaves matches_string NULL.

5 years agoUpgrade to IPC-SysV 2.05.
Jarkko Hietaniemi [Thu, 18 Feb 2016 02:04:18 +0000 (21:04 -0500)]
Upgrade to IPC-SysV 2.05.

5 years agoCast PL_dump_re_max_len to avoid type mismatch warning.
Craig A. Berry [Fri, 19 Feb 2016 21:33:10 +0000 (15:33 -0600)]
Cast PL_dump_re_max_len to avoid type mismatch warning.

Specifically this one on VMS:

    || ! grok_atoUV(dump_len_string, &PL_dump_re_max_len, NULL))
.....................................^
%CC-W-PTRMISMATCH, In this statement, the referenced type of the
pointer value "&(my_perl->Idump_re_max_len)" is "unsigned int",
which is not compatible with "unsigned long".

This was new code in 2bfbbbaf9ef1783ba.

5 years agoregcomp.c: White-space only
Karl Williamson [Fri, 19 Feb 2016 18:16:06 +0000 (11:16 -0700)]
regcomp.c: White-space only

Re-indent and reflow to fit in 80 cols after previous commit

5 years agoregcomp.c: Can't do optimization if inverting
Karl Williamson [Fri, 19 Feb 2016 18:11:40 +0000 (11:11 -0700)]
regcomp.c: Can't do optimization if inverting

Something like /[^\W_0-9]/ was getting optimized into something it
shouldn't have been.  Although, the way the execution code is
structured, I couldn't find a case where it actually made a difference.
So skip the optimization if inverting.

5 years agoregcomp.c: Use colors for -Dr metanotation
Karl Williamson [Thu, 18 Feb 2016 21:51:01 +0000 (14:51 -0700)]
regcomp.c: Use colors for -Dr metanotation

Use a different color for the metanotation than the code points being
output under Debugcolor.  The default is to have stand out mode for the
code points, and not for the meta.

5 years agoregcomp.c: Backlslash {} in -Dr output
Karl Williamson [Thu, 18 Feb 2016 21:44:02 +0000 (14:44 -0700)]
regcomp.c: Backlslash {} in -Dr output

This is because it could otherwise be confused with the meta notation
used there.

5 years agoRevamp -Dr handling of /[...]/
Karl Williamson [Thu, 18 Feb 2016 21:43:14 +0000 (14:43 -0700)]
Revamp -Dr handling of /[...]/

This revamps the handling of -Dr for bracketed character classes.  There
were bugs introduced earlier in 5.23, and this consolidates the handling
of /d classes so that the interactions can be better considered.  It
tries inverting the portion that is in the bitmap range to see if the
output is shorter, and clearer that way.  And it always makes the
above-bitmap code points show as not-inverted, as that is clearer.

I ran out of time before the freeze, so I had to not invert in some
cases.

5 years agoAdd environment variable for -Dr: PERL_DUMP_RE_MAX_LEN
Karl Williamson [Fri, 19 Feb 2016 04:47:15 +0000 (21:47 -0700)]
Add environment variable for -Dr: PERL_DUMP_RE_MAX_LEN

The regex engine when displaying debugging info, say under -Dr, will elide
data in order to keep the output from getting too long.  For example,
the number of code points in all of Unicode matched by \w is quite
large, and so when displaying a pattern that matches this, only the
first some number of them are printed, and the rest are truncated,
represented by "...".

Sometimes, one wants to see more than what the
compiled-into-the-engine-max shows.  This commit creates code to read
this environment variable to override the default max lengths.  This
changes the lengths for everything to the input number, even if they
have different compiled maximums in the absence of this variable.

I'm not  currently documenting this variable, as I don't think it works
properly under threads, and we may want to alter the behavior in various
ways as a result of gaining experience with using it.

5 years agoregcomp.c: Save a branch test
Karl Williamson [Mon, 15 Feb 2016 23:27:20 +0000 (16:27 -0700)]
regcomp.c: Save a branch test

This branch will only be true if the answer to the previous branch was
also true, so can just move it to within that to avoid an unnecessary
test.

5 years agoregcomp.c: Clarify -Dr output under /l
Karl Williamson [Mon, 15 Feb 2016 23:20:43 +0000 (16:20 -0700)]
regcomp.c: Clarify -Dr output under /l

It is now redundant to indicate that an ANYOF node is for locale, as the
regnode type ANYOFL now clearly indicates that.  But also sometimes the
node is only vaid if the runtime locale is a UTF-8 one.  That was not
clearly indicated.

5 years agoregcomp.c: Comments, white-space, add grouping () for clarity
Karl Williamson [Sun, 14 Feb 2016 01:00:36 +0000 (18:00 -0700)]
regcomp.c: Comments, white-space, add grouping () for clarity

5 years agoAdd a parameter to a static function
Karl Williamson [Fri, 19 Feb 2016 04:43:14 +0000 (21:43 -0700)]
Add a parameter to a static function

This parameter will be used in a future commit, it changes the output
format of this function that displays the contents of an inversion list
so that it won't have to be parsed later, simplifying the code at that
time.

5 years agoChange private function to static
Karl Williamson [Fri, 19 Feb 2016 04:36:04 +0000 (21:36 -0700)]
Change private function to static

This function was used outside the file it contains, but was only
defined (by #ifdef's) for those few internal core files for which it was
needed.  Now all those uses have gone, save for the one file.  Better to
make it static so no one can circumvent those #ifdef's.

5 years agoregcomp.c: Change structure element size and loc
Karl Williamson [Fri, 19 Feb 2016 04:08:24 +0000 (21:08 -0700)]
regcomp.c: Change structure element size and loc

The 'strict' field is only a bool, but was declared I32, which led to
warnings on some compilers when it was passed to a function expecting a
bool.  It is moved to the end of the structure, since it doesn't pack
well with the rest.

5 years agoregcomp.c: Move static declaration to file level
Karl Williamson [Thu, 18 Feb 2016 04:24:37 +0000 (21:24 -0700)]
regcomp.c: Move static declaration to file level

This array will be used in a future commit outside the function it
previously was declared in

5 years agoregcomp.c: optimization for qr/[...]/il
Karl Williamson [Thu, 18 Feb 2016 04:17:46 +0000 (21:17 -0700)]
regcomp.c: optimization for qr/[...]/il

Certain matches are calculated as being legal only when the current
execution time local is a UTF-8 one.  However, a character class can
have multiple components (and usually does), and some of those components
may be duplicates of some of these matches, and be valid regardless of
the locale.  This commit removes them from the tentative list, and if it
goes to zero, clears it.  This will improve execution time slightly.

5 years agoregcomp.c: Avoid a segfault
Karl Williamson [Thu, 18 Feb 2016 04:15:52 +0000 (21:15 -0700)]
regcomp.c: Avoid a segfault

I stumbled across this in adding more code elsewhere, so I don't know
how to trigger it.  This is in the intersection routine for two
inversion lists.  The corresponding union code correctly handles the
case when the input is NULL, so just copy that to here.

5 years agoPATCH: [perl 127537] /\W/ regression with UTF-8
Karl Williamson [Sat, 13 Feb 2016 22:35:11 +0000 (15:35 -0700)]
PATCH: [perl 127537] /\W/ regression with UTF-8

This bug is apparently uncommon in the field, as I was the one who
discovered it.  It requires a UTF-8 pattern containing a complemented
posix class, like \W or \S, in an inverted character class, like
[^\Wfoo] in a pattern that also has a synthetic start class generated by
the regex optimizer for it .

The fix is trivial.

5 years agoregcomp.c, toke.c: swap functions being inline static
Karl Williamson [Sat, 13 Feb 2016 18:53:50 +0000 (11:53 -0700)]
regcomp.c, toke.c: swap functions being inline static

grok_bslash_x() is so large that no compiler will inline it.  Move it to
dquote.c from dq_inline.c.  Conversely, move form_octal_warning() to
dq_inline.c.  It is so tiny that the function call overhead is scarcely
smaller than the function body.

This also moves things in embed.fnc so all these functions.  are not
visible outside the few files they are supposed to be used in.

5 years agoCast correctly to U8, not char
Karl Williamson [Mon, 15 Feb 2016 18:02:07 +0000 (11:02 -0700)]
Cast correctly to U8, not char

U8 is what the function being called is expecting

5 years agoperlapi: Hide the swash functions
Karl Williamson [Tue, 16 Feb 2016 03:59:10 +0000 (20:59 -0700)]
perlapi: Hide the swash functions

These should be internal only, and we may want to get rid of them
someday.  Hide their existence so that people who don't already know
about them won't be tempted to try to use them.

5 years agoregcomp.h: Not all ANYOF flags are in use.
Karl Williamson [Tue, 16 Feb 2016 03:32:32 +0000 (20:32 -0700)]
regcomp.h: Not all ANYOF flags are in use.

So, it's better to not have a mask to include the unused ones.

5 years agoregcomp.c: Simplify a few lines of code
Karl Williamson [Sun, 14 Feb 2016 00:21:28 +0000 (17:21 -0700)]
regcomp.c: Simplify a few lines of code

This code had been written before the isMNEMONIC_CNTRL() macro was
created.  Using the macro simplifies things a little.

5 years agoregcomp.c: Clean up logic in function
Karl Williamson [Sat, 13 Feb 2016 22:51:50 +0000 (15:51 -0700)]
regcomp.c: Clean up logic in function

This function uses some crude heuristics to decide whether to make a
synthetic start class or not.  This commit removes some redundancies.

5 years agoregcomp.c: -Dr \xZZ instead of \x{ZZ}
Karl Williamson [Thu, 11 Feb 2016 17:25:04 +0000 (10:25 -0700)]
regcomp.c: -Dr \xZZ instead of \x{ZZ}

The brackets are unnecessary and clutter the output.

5 years agoregcomp.c: Fix -Dr bug
Karl Williamson [Thu, 11 Feb 2016 17:12:57 +0000 (10:12 -0700)]
regcomp.c: Fix -Dr bug

It was using a wrong length calculation, which under some circumstances
caused the output to include extra bytes.  Also I added comments, and
changed a variable name, so I don't have to figure this out again from
scratch.

5 years agoregcomp.c: Use macro to hide complexity
Karl Williamson [Mon, 15 Feb 2016 18:04:36 +0000 (11:04 -0700)]
regcomp.c: Use macro to hide complexity

There is an existing macro that does these three lines in one source
line.

5 years agoDon't allow /\N{}/ under 're strict'
Karl Williamson [Sat, 13 Feb 2016 20:49:00 +0000 (13:49 -0700)]
Don't allow /\N{}/ under 're strict'

This is the one remaining empty {} that was accepted under the
experimental 'use re "strict"'.

5 years agoperlrecharclass: Add some missing info
Karl Williamson [Sat, 13 Feb 2016 22:20:49 +0000 (15:20 -0700)]
perlrecharclass: Add some missing info

5 years agoRemove an unused variable
Tom Hukins [Wed, 17 Feb 2016 15:04:10 +0000 (15:04 +0000)]
Remove an unused variable

Other Time::HiRes test scripts define and use $limit to cope with timing
on heavily loaded systems.

This test script defined the variable but never used it.

5 years ago[perl #127556] update installperl to new location of W32 libperl link lib
Daniel Dragan [Thu, 18 Feb 2016 00:15:39 +0000 (11:15 +1100)]
[perl #127556] update installperl to new location of W32 libperl link lib

commit bf543eaf90 made the Win32 GCC or VC linkers produce
[lib]perl[5xx].[a/lib] in the /lib/CORE dir to reduce the prereq recipie
lines needing to run until XS modules can be built ("Extensions" which
builds all DLL XS modules is the longest running target and every effort
should be made for it to be started sooner by the make tool in parallel
build). The file is now made in /lib/CORE, previously it was made in root
and xcopy-ed to /lib/CORE in the same target that built the file. xcopy is
a seperate process run so was remove in that commit.

installperl doesn't use uninstalled /lib/CORE to determine the contents of
installed /lib/CORE (maybe that is a bug or bad design?), so the linking
lib was not being installed after a "[g/d]make install" making it
impossible to compile XS code on Win32 Perl. Change installperl
to look for the linking lib in /lib/CORE on Win32 and not in root. Even
though the nmake makefile still does the XCOPY since it is older/less
maintained, the installperl code still works since the root and /lib/CORE
files are identical on the nmake build and built in the same target.

5 years agoperldelta for f94c6c536844091ca6a005e3e0398db8e1cc212e
James E Keenan [Wed, 17 Feb 2016 23:50:57 +0000 (18:50 -0500)]
perldelta for f94c6c536844091ca6a005e3e0398db8e1cc212e

5 years agoTime::HiRes version bump.
Jarkko Hietaniemi [Wed, 17 Feb 2016 14:40:00 +0000 (09:40 -0500)]
Time::HiRes version bump.

5 years agoAllow TIME_HIRES_DONT_RUN_PROBES=1 to aid cross-compiling
Jarkko Hietaniemi [Wed, 17 Feb 2016 14:37:25 +0000 (09:37 -0500)]
Allow TIME_HIRES_DONT_RUN_PROBES=1 to aid cross-compiling

If that is true, the probes are compiled but not run.

https://rt.cpan.org/Ticket/Display.html?id=111391

Patch kindly supplied by Niko Tyni.

5 years agot/re/reg_mesg.t: Add a couple of tests
Karl Williamson [Tue, 16 Feb 2016 19:08:20 +0000 (12:08 -0700)]
t/re/reg_mesg.t: Add a couple of tests

5 years agominor comment improvements in hv.h and scope.h
Daniel Dragan [Thu, 11 Feb 2016 10:48:58 +0000 (05:48 -0500)]
minor comment improvements in hv.h and scope.h

-perl doesn't use malloc, it uses Newx (per interp memory)
-say what the return type is of SSNEW

5 years agoRevert "tweak NOT_REACHED in DEBUGGING builds"
Lukas Mai [Mon, 15 Feb 2016 20:17:18 +0000 (21:17 +0100)]
Revert "tweak NOT_REACHED in DEBUGGING builds"

This reverts commit 5b48e25f83f62f48ea280c49b00302e063384348.

The above commit breaks win32 builds:

    IO.xs(73) : error C2065: 'my_perl' : undeclared identifier
    IO.xs(73) : error C2223: left of '->IProc' must point to struct/union

where dist/IO/IO.xs contains:

    69: static int
    70: not_here(const char *s)
    71: {
    72:     croak("%s not implemented on this architecture", s);
    73:     NORETURN_FUNCTION_END;
    74: }

and perl.h contains:

    #  define NORETURN_FUNCTION_END NOT_REACHED;

5 years agodoop.c: fix typo in header comment
David Mitchell [Mon, 15 Feb 2016 15:37:33 +0000 (15:37 +0000)]
doop.c: fix typo in header comment

5 years agoperldelta: move the two Win32 gmake improvements to where they belong
Tony Cook [Mon, 15 Feb 2016 02:05:18 +0000 (13:05 +1100)]
perldelta: move the two Win32 gmake improvements to where they belong

5 years agofix win32 gmake with win64 VC with 32 bit GCC in PATH build failure
Daniel Dragan [Sat, 13 Feb 2016 09:05:24 +0000 (04:05 -0500)]
fix win32 gmake with win64 VC with 32 bit GCC in PATH build failure

The assignment of PROCESSOR_ARCHITEW6432 to PROCESSOR_ARCHITECTURE near
the "When we are running from a 32bit cmd.exe on AMD64 then" comment
doesn't happen if WIN64 var was already assigned to. Do the 32/64 auto
detection only for GCC builds, not for VC builds. I not implementing 32/64
and cl version (CCTYPE setting) detection by parsing stdout of "cl<enter>"
with batch and gmake syntax at this time.

failure message:
generate_uudmap.obj : fatal error LNK1112: module machine type 'x64'
conflicts with target machine type 'X86'
GNUmakefile:1416: recipe for target '..\generate_uudmap.exe' failed
gmake: *** [..\generate_uudmap.exe] Error 2

5 years agoSkip the length sanity check if d_name is pointer or less.
Jarkko Hietaniemi [Sun, 14 Feb 2016 00:34:20 +0000 (19:34 -0500)]
Skip the length sanity check if d_name is pointer or less.

[perl #127511] v5.23.7-308-g1d41bb7 broke t/op/threads-dirh.t on solaris threaded builds

In other words, skip it if the dirent->d_name is a pointer (char *)
or less (struct-final char d_name[1], as it seems to be in Solaris).

The length sanity check is meant for places where the d_name is
a true array.

Follow-up to 1d41bb72.