This is a live mirror of the Perl 5 development currently hosted at
8 years agoepigraphs - No need to break up long L<> lines
Steve Hay [Wed, 14 Jan 2015 18:03:17 +0000 (18:03 +0000)]
epigraphs - No need to break up long L<> lines

8 years agoepigraphs - Prefer links, and fill in a missing one
Steve Hay [Wed, 14 Jan 2015 17:59:58 +0000 (17:59 +0000)]
epigraphs - Prefer links, and fill in a missing one

Also correct a couple more dates in the process, and fill in a missing

8 years agoepigraphs - Correct some dates and links and fill in a couple of missing names
Steve Hay [Wed, 14 Jan 2015 13:40:53 +0000 (13:40 +0000)]
epigraphs - Correct some dates and links and fill in a couple of missing names

8 years agoAdd text about EBCDIC to pods: perlhack* perlport
Karl Williamson [Wed, 14 Jan 2015 20:45:40 +0000 (13:45 -0700)]
Add text about EBCDIC to pods: perlhack* perlport

8 years agoperlhacktips: Fix typo
Karl Williamson [Wed, 14 Jan 2015 18:16:50 +0000 (11:16 -0700)]
perlhacktips: Fix typo

8 years agot/ Improve function names
Karl Williamson [Wed, 14 Jan 2015 18:01:21 +0000 (11:01 -0700)]
t/ Improve function names

'latin1_to_native' and 'native_to_latin1' actually operate on all code
points, not just the ranges implied by their names.  This commit changes
the names to reflect that, to 'uni_to_native' and 'native_to_uni'.
The old names have only been available since 5.21, so there is no
backcompat issue.

8 years agoUse more universal function in tests where makes sense
Karl Williamson [Wed, 14 Jan 2015 17:54:31 +0000 (10:54 -0700)]
Use more universal function in tests where makes sense

By using a different function that is just as applicable, or more so, in
these cases, we can avoid having to require a file.

The functions that translate code points between character sets are
always available and just as appropriate for the uses in the three tests
t/re/fold_grind.t, t/re/reg_fold.t, and lib/unicore/  Change
to use it instead of the functions that take string inputs.  This is
slightly cleaner, as the file that contains it no longer has to be
'required'.  And in some of the cases the code point function is a
better choice, as there had to be translation between chr and ord

8 years agot/ Rmv obsolete comment
Karl Williamson [Wed, 14 Jan 2015 17:51:09 +0000 (10:51 -0700)]
t/ Rmv obsolete comment

The referred-to functions have been moved to a separate file, and are no
longer contained in this one.

8 years agoUpdate Devel-PPPort to CPAN version 3.27
Chris 'BinGOs' Williams [Wed, 14 Jan 2015 16:49:58 +0000 (16:49 +0000)]
Update Devel-PPPort to CPAN version 3.27


3.27 - 2015-01-13

    * Regen base and todo files.
    * Fix isASCII and isCNTRL for <5.6.0
    * Other minor fixups.

    (Thanks to mhx for all of the work on this release)

8 years agoUpdate Getopt-Long to CPAN version 2.43
Chris 'BinGOs' Williams [Wed, 14 Jan 2015 16:07:44 +0000 (16:07 +0000)]
Update Getopt-Long to CPAN version 2.43


Changes in version 2.43

* Fix bug

* Implement enhancement

* Fix the Getopt::Long part of bug

8 years agouname -r works on MINIX as well
Chris 'BinGOs' Williams [Wed, 14 Jan 2015 14:12:22 +0000 (14:12 +0000)]
uname -r works on MINIX as well

8 years agolocale.c: Add comment; move #if
Karl Williamson [Tue, 13 Jan 2015 19:53:34 +0000 (12:53 -0700)]
locale.c: Add comment; move #if

A better comment is added.  The #if is moved so that the rare
compilation that doesn't use LC_CTYPE, no unused variable warning would
be generated.

8 years agoMove unlikely executed macro to function
Karl Williamson [Tue, 13 Jan 2015 05:31:07 +0000 (22:31 -0700)]
Move unlikely executed macro to function

The bulk of this macro is extremely rarely executed, so it makes sense
to optimize for space, as it is called from a fair number of places, and
move as much as possible to a single function.

For whatever it's worth, on my system with my typical compilation
options, including -O0, the savings was 19640 bytes in regexec.o, 4528
in utf8.o, at a cost of 1488 in locale.o.

8 years agolocale.c: Fix memory leak.
Karl Williamson [Tue, 13 Jan 2015 05:01:53 +0000 (22:01 -0700)]
locale.c: Fix memory leak.

I spotted this in code review.  I didn't add a test for it, because to
expose the much more serious bug fixed by the previous commit, I had to
temporarily change the C code to force these extremely
unlikely-to-be-taken branches to execute.

8 years agosv.c: Fix cloning of interp variable
Karl Williamson [Tue, 13 Jan 2015 05:06:34 +0000 (22:06 -0700)]
sv.c: Fix cloning of interp variable

This should have been cloned by sv_dup_inc.  I don't know why it didn't
fail outside of Win32, but fail there it did, spectacularly, but only
when I temporarily change some C code to force execution of the affected
code, which only gets executed for problematic locales, which may very
well not exist on most machines.

8 years agot/re/reg_mesg.t: White-space only
Karl Williamson [Mon, 12 Jan 2015 22:21:51 +0000 (15:21 -0700)]
t/re/reg_mesg.t: White-space only

Indent, and wrap lines

8 years agoregcomp.c: Fix comment typos
Karl Williamson [Mon, 12 Jan 2015 22:13:02 +0000 (15:13 -0700)]
regcomp.c: Fix comment typos

8 years agodquote_static.c: Rmv obsolete comment
Karl Williamson [Mon, 12 Jan 2015 22:12:24 +0000 (15:12 -0700)]
dquote_static.c: Rmv obsolete comment

8 years agoAdd 'strict' subpragma to 'use re'
Karl Williamson [Mon, 5 Jan 2015 20:17:58 +0000 (13:17 -0700)]
Add 'strict' subpragma to 'use re'

This subpragma is to allow p5p to add warnings/errors for regex patterns
without having to worry about backwards compatibility.  And it allows
users who want to have the latest checks on their code to do so.  An
experimental warning is raised by default when it is used, not because
the subpragma might go away, but because what it catches is subject to
change from release-to-release, and so the user is acknowledging that
they waive the right to backwards compatibility.   I will be working in
the near term to make some changes to what is detected by this.

Note that there is no indication in the pattern stringification that it
was compiled under this.  This means I didn't have to figure out how to
stringify it.  It is fine because using this doesn't affect what the
pattern gets compiled into, if successful.  And interpolating the
stringified pattern under either strict or non-strict should both just

8 years agoregcomp.c: Add 'strict' parameter to S_regclass()
Karl Williamson [Mon, 5 Jan 2015 18:59:04 +0000 (11:59 -0700)]
regcomp.c: Add 'strict' parameter to S_regclass()

This function has the capability to do strict checking, with the
variable 'strict', but it is initialized based on another parameter's
value.  This commit causes 'strict' to be passed in, so it is
independent of other parameters.

8 years agoReserve a bit for 'the re strict subpragma.
Karl Williamson [Mon, 5 Jan 2015 04:29:10 +0000 (21:29 -0700)]
Reserve a bit for 'the re strict subpragma.

This is another step in the process

8 years agoAdd new warnings category for "use re 'strict'"
Karl Williamson [Sun, 4 Jan 2015 16:55:35 +0000 (09:55 -0700)]
Add new warnings category for "use re 'strict'"

This is a step in the process of adding that subpragma.

8 years agoOutput warning in qr// only once
Karl Williamson [Sun, 11 Jan 2015 17:06:01 +0000 (10:06 -0700)]
Output warning in qr// only once

This warning is being output in both passes of pattern compilation

8 years agoConsistent output from core-cpan-diff
Steve Hay [Tue, 13 Jan 2015 17:45:05 +0000 (17:45 +0000)]
Consistent output from core-cpan-diff

It uses 'Perl:', not 'perl:', a few lines later.

(We currently have "found more than one CPAN candidate" for libnet, which
I have addressed by scheduling the removal of old versions from CPAN: 1.29
was the last version containing some packages, so it remained in
02packages.details.txt because of that.)

8 years agoupdate AUTHORS
David Mitchell [Tue, 13 Jan 2015 14:58:22 +0000 (14:58 +0000)]
update AUTHORS

8 years agomake re_intuit_string() return correct string
Rostislav Skudnov [Wed, 24 Dec 2014 06:12:52 +0000 (08:12 +0200)]
make re_intuit_string() return correct string

Fix #123469 - Bug in split function, with utf8 strings

Each regex has two SV pointers, check_substr and check_utf8,
which hold a constant string (if any) corresponding to the longest
constant string in the regexp.

When the regex is first compiled, only one pointer is set, depending on
whether the pattern is utf8 or not; but subsequent usage of the regex can
instantiate the other pointer too. So which of the two strings
re_intuit_string() should return should be based on the UTF8ness of the
pattern, not whether check_substr is set.

8 years agoUpdate libnet to CPAN version 3.05
Chris 'BinGOs' Williams [Tue, 13 Jan 2015 11:11:37 +0000 (11:11 +0000)]
Update libnet to CPAN version 3.05


3.05 2015-01-12

    - Fixed infinite loop in Net::SMTP::auth().  [CPAN RT#100235]

8 years agoperldelta for ac0e53cd2e68
Tony Cook [Tue, 13 Jan 2015 06:05:11 +0000 (17:05 +1100)]
perldelta for ac0e53cd2e68

8 years agoreport which files have duplicates in porting/manifest.t
Tony Cook [Tue, 13 Jan 2015 05:28:15 +0000 (16:28 +1100)]
report which files have duplicates in porting/manifest.t

8 years agoSimplify ext/SDBM_File layout and build
Ed J [Mon, 29 Dec 2014 11:59:40 +0000 (11:59 +0000)]
Simplify ext/SDBM_File layout and build

Tony: fix MANIFEST

8 years agoUpdate MIME-Base64 to CPAN version 3.15
Chris 'BinGOs' Williams [Tue, 13 Jan 2015 00:39:46 +0000 (00:39 +0000)]
Update MIME-Base64 to CPAN version 3.15


2015-01-12   Gisle Aas <>

   Release 3.15

   Avoid compilation warnings on Windows.

   Restore compatibility with perl-5.4

8 years agoUpdate Digest-MD5 to CPAN version 2.54
Chris 'BinGOs' Williams [Tue, 13 Jan 2015 00:23:00 +0000 (00:23 +0000)]
Update Digest-MD5 to CPAN version 2.54


2015-01-12   Gisle Aas <>

   Release 2.54

   David Mitchell: silence some compiler warnings
   Jonathan Hall: Add ->context() feature
   Steve Hay: Sync with blead
   bulk88: const the vtable
   zefram: 5.6 threads test fix

8 years agoperl.c: silence compiler warning:
David Mitchell [Mon, 12 Jan 2015 16:36:51 +0000 (16:36 +0000)]
perl.c: silence compiler warning:

perl.c:3629:75: warning: value computed is not used [-Wunused-value]

8 years agoTest for nan range ends.
Jarkko Hietaniemi [Mon, 12 Jan 2015 03:57:37 +0000 (22:57 -0500)]
Test for nan range ends.

8 years agoDetect infnan range ends.
Jarkko Hietaniemi [Mon, 12 Jan 2015 03:58:35 +0000 (22:58 -0500)]
Detect infnan range ends.

8 years agoSeparate bad range end detection.
Jarkko Hietaniemi [Mon, 12 Jan 2015 03:58:15 +0000 (22:58 -0500)]
Separate bad range end detection.

8 years agoTest for inf range ends.
Jarkko Hietaniemi [Mon, 12 Jan 2015 03:27:45 +0000 (22:27 -0500)]
Test for inf range ends.

8 years agoExplicitly test x infnan producing empty string.
Jarkko Hietaniemi [Mon, 12 Jan 2015 03:18:00 +0000 (22:18 -0500)]
Explicitly test x infnan producing empty string.

8 years agoUpdate IO-Socket-IP to CPAN version 0.36
Chris 'BinGOs' Williams [Mon, 12 Jan 2015 11:02:38 +0000 (11:02 +0000)]
Update IO-Socket-IP to CPAN version 0.36


0.36    2014/01/10 20:54:58
         * Always bind() on MSWin32 because Windows doesn't like it if we
           listen() having not done so (RT101396)

8 years agoUpdate Digest-SHA to CPAN version 5.95
Chris 'BinGOs' Williams [Mon, 12 Jan 2015 11:01:41 +0000 (11:01 +0000)]
Update Digest-SHA to CPAN version 5.95


5.95  Sat Jan 10 12:15:36 MST 2015
  - modified the bit-ordering test (ref. t/bitorder.t)
    -- supplied directory-change preamble for CORE builds

8 years agoperldelta for e0c6a6b8c9
Father Chrysostomos [Mon, 12 Jan 2015 06:28:18 +0000 (22:28 -0800)]
perldelta for e0c6a6b8c9

8 years agoperldelta for 08b999a9d / #123452
Father Chrysostomos [Mon, 12 Jan 2015 06:25:51 +0000 (22:25 -0800)]
perldelta for 08b999a9d / #123452

8 years agoperldelta for 2384afee9 / #123553
Father Chrysostomos [Mon, 12 Jan 2015 06:21:56 +0000 (22:21 -0800)]
perldelta for 2384afee9 / #123553

8 years agoperldelta for 307cbb9fc
Father Chrysostomos [Mon, 12 Jan 2015 06:18:12 +0000 (22:18 -0800)]
perldelta for 307cbb9fc

8 years agoperldelta for f605e527
Father Chrysostomos [Mon, 12 Jan 2015 06:14:00 +0000 (22:14 -0800)]
perldelta for f605e527

8 years agoperldelta for eb4ec35b34 / #123514
Father Chrysostomos [Mon, 12 Jan 2015 06:11:56 +0000 (22:11 -0800)]
perldelta for eb4ec35b34 / #123514

8 years agoperldelta for 1d51ab6ca
Father Chrysostomos [Mon, 12 Jan 2015 06:09:20 +0000 (22:09 -0800)]
perldelta for 1d51ab6ca

8 years agoperldelta for d8bd3d828 / #123495
Father Chrysostomos [Mon, 12 Jan 2015 06:05:33 +0000 (22:05 -0800)]
perldelta for d8bd3d828 / #123495

8 years agoperldelta for fd8be4a16
Father Chrysostomos [Mon, 12 Jan 2015 06:03:21 +0000 (22:03 -0800)]
perldelta for fd8be4a16

8 years agoperldelta for 3c6ef0a5 / #103260 / #123071
Father Chrysostomos [Mon, 12 Jan 2015 05:47:34 +0000 (21:47 -0800)]
perldelta for 3c6ef0a5 / #103260 / #123071

8 years agoperldelta for 58480c3bb
Father Chrysostomos [Mon, 12 Jan 2015 05:44:53 +0000 (21:44 -0800)]
perldelta for 58480c3bb

8 years agoperldelta for 62ae7cfb674910
Father Chrysostomos [Mon, 12 Jan 2015 05:44:13 +0000 (21:44 -0800)]
perldelta for 62ae7cfb674910

8 years agoperldelta for 2e4af4cf6b
Father Chrysostomos [Mon, 12 Jan 2015 05:38:07 +0000 (21:38 -0800)]
perldelta for 2e4af4cf6b

8 years agoCorrect perl ver in Safe Changes
Father Chrysostomos [Mon, 12 Jan 2015 05:34:06 +0000 (21:34 -0800)]
Correct perl ver in Safe Changes

8 years agorefactor op.c S_bad_type_*v
Daniel Dragan [Thu, 1 Jan 2015 04:09:28 +0000 (23:09 -0500)]
refactor op.c S_bad_type_*v

-flags arg of both funcs is unused in all callers. Move the 0 to the funcs.
 flags arg is from commit ce16c625ec in 2012
-all bad_type_gv calls are right before the end of the switch, the pushing
 of 1st 3 args and call asm ops can be merged together, leaving the 1
 string constant push as the only unique op between the 7 src code
 callers of bad_type_gv, this requires reordering the args so the only
 unique one is the last/right most one, reordering can't be done to
 bad_type_pv because each following execution point after each bad_type_pv
 is different, bad_type_pv's caller/s are not a switch statement
- commit 53e06cf030 probably overlooked the 2 PL_op_desc[type] places,
  OP_DESC is a fancier superset of PL_op_desc[type], since calling
  bad_type_pv only happens during a PP syntax error, that is not
  performance critical, so replace PL_op_desc[type] with OP_DESC and
  factor out OP to description string lookup, plus custom ops are very rare
  so this shouldn't impact the error message seen by the user

VC2003 .text section of perl521.dll before 0xc9543 after 0xC9523

8 years agoConfused cloning of nested state subs
Father Chrysostomos [Mon, 12 Jan 2015 04:39:03 +0000 (20:39 -0800)]
Confused cloning of nested state subs

use feature 'lexical_subs','state';
no warnings 'experimental';
my $sub = sub{
    state sub sb4;
    state sub a {
        state $x = 42;
        sub sb4 { $x; }
    print sb4(), "\n";

The output:

Bizarre copy of CODE in subroutine exit at - line 10.

The sb4 sub was trying to close over the wrong pad; namely, the one
belonging to the anonymous sub.

8 years agoperldiag grammo
Father Chrysostomos [Mon, 12 Jan 2015 04:08:12 +0000 (20:08 -0800)]
perldiag grammo

8 years agoCatch infnan repeat counts.
Jarkko Hietaniemi [Mon, 12 Jan 2015 01:05:34 +0000 (20:05 -0500)]
Catch infnan repeat counts.

Not entirely convinced this is worth the extra code but getting
"Negative repeat count" warning for NaN repeat count is too much.

Even before this patch, "a" x $Inf didn't go all Genghis over your
virtual memory.  This is all about the right warning.

8 years agoWin32: stat() only after a failed open() on a module
Daniel Dragan [Thu, 8 Jan 2015 05:10:13 +0000 (00:10 -0500)]
Win32: stat() only after a failed open() on a module

See RT ticket for this patch for details.

8 years agoAdd missing =item * in perldelta (now perl5217delta) from commit 070733dfda
Steve Hay [Sat, 10 Jan 2015 16:17:19 +0000 (16:17 +0000)]
Add missing =item * in perldelta (now perl5217delta) from commit 070733dfda

8 years agoCorrect a bug number in perldelta
Steve Hay [Sat, 10 Jan 2015 16:09:36 +0000 (16:09 +0000)]
Correct a bug number in perldelta

8 years agoperldelta for 285727d0e3
Steve Hay [Sat, 10 Jan 2015 15:39:08 +0000 (15:39 +0000)]
perldelta for 285727d0e3

8 years agoBump $VERSION following previous commit
Steve Hay [Sat, 10 Jan 2015 15:35:27 +0000 (15:35 +0000)]
Bump $VERSION following previous commit

The code is currently identical to 0.23, but when the next change is made
the $VERSION must not be bumped to 0.24 since that has already been
released. For the same reason, we can't use 0.24 now, so bump to 0.25.

8 years agoRevert "fix attributes memcmp without len<6 (asan catch)"
Steve Hay [Sat, 10 Jan 2015 15:29:26 +0000 (15:29 +0000)]
Revert "fix attributes memcmp without len<6 (asan catch)"

This reverts commit ff5314c5aa54b172122507017cac034acf1c4bf7.

As noted by Andy Dougherty in #122629 the problem that this fixes
was already fixed more succinctly in dd369969a/#122701.

8 years agoperldelta for [perl #123530]
Karl Williamson [Thu, 8 Jan 2015 21:36:00 +0000 (14:36 -0700)]
perldelta for [perl #123530]

8 years agoPOSIX.pod: Various nits, typos, clarifications
Karl Williamson [Thu, 8 Jan 2015 20:49:56 +0000 (13:49 -0700)]
POSIX.pod: Various nits, typos, clarifications

8 years agoperlpodspec: Corrections/adds to detecting =encoding
Karl Williamson [Thu, 8 Jan 2015 19:22:21 +0000 (12:22 -0700)]
perlpodspec: Corrections/adds to detecting =encoding

C0 and C1 are not legal UTF-8 start bytes.  utf8::decode() is a more
accurate way of determining UTF-8.

8 years agotoke.c: White-space only
Karl Williamson [Thu, 8 Jan 2015 19:16:50 +0000 (12:16 -0700)]
toke.c: White-space only

Outdent a block that was indented by 2 tab widths.

8 years agoActually remove the TODO rather than just the block
Chris 'BinGOs' Williams [Sat, 10 Jan 2015 12:24:02 +0000 (12:24 +0000)]
Actually remove the TODO rather than just the block

8 years agoUpdate Digest-SHA to CPAN version 5.94
Chris 'BinGOs' Williams [Sat, 10 Jan 2015 11:59:43 +0000 (11:59 +0000)]
Update Digest-SHA to CPAN version 5.94


5.94  Sat Jan 10 00:45:28 MST 2015
  - added support for threaded builds
    -- PERL_GET_NO_CONTEXT, pTHX_, aTHX_, etc.
    -- employed 'const' storage class where possible
    -- ref. #101260
  - simplified shabits() routine (bitwise input buffering)
    -- slightly less efficient but easier to understand
    -- ref. #101344
  - minor documentation tweaks and additions

8 years agoRemoved TODO from pm_to_lib test in EUMM
Chris 'BinGOs' Williams [Fri, 9 Jan 2015 22:21:58 +0000 (22:21 +0000)]
Removed TODO from pm_to_lib test in EUMM

And upstream fix for race condition applied

8 years agoSimplify s/// and tr/// parsing logic
Father Chrysostomos [Fri, 9 Jan 2015 02:49:32 +0000 (18:49 -0800)]
Simplify s/// and tr/// parsing logic

These two operators were being translated into subst("","") and
tr("","") by the lexer.  Then pmruntime in op.c would take apart the
resulting list op.  Instead of constructing a list op only to take it
apart again, feed the replacement part to pmruntime separately.  We
can achieve this by introducing a new token ('/') that the parser rec-
ognizes as introducing a replacement.

If we had followed this approach to begin with, then bug #123542 would
never have happened.

(Actually, it seems the parser did know about the replacement part to
begin with, but it changed in perl-5.8.0-4047-g131b3ad to fix some
overloading problems.)

8 years agoparser.t: Correct bug number
Father Chrysostomos [Fri, 9 Jan 2015 02:00:35 +0000 (18:00 -0800)]
parser.t: Correct bug number

8 years agoUpdate ExtUtils-Command to CPAN version 1.20
Chris 'BinGOs' Williams [Thu, 8 Jan 2015 21:50:05 +0000 (21:50 +0000)]
Update ExtUtils-Command to CPAN version 1.20


1.20  Thu, Jan 8, 2015
  - Skip some tests on Haiku as well

8 years agoparser.t: Correct skip count
Father Chrysostomos [Thu, 8 Jan 2015 17:23:50 +0000 (09:23 -0800)]
parser.t: Correct skip count

I increased the skip count in 08b999a9 by mistake.  For crashing bugs,
executing the code that would have crashed is sufficient to test it.

8 years agoFix apidocs for OP_TYPE_IS(_OR_WAS) - arguments separated by |, not ,.
Matthew Horsfall (alh) [Thu, 8 Jan 2015 13:41:24 +0000 (08:41 -0500)]
Fix apidocs for OP_TYPE_IS(_OR_WAS) - arguments separated by |, not ,.

This was causing Devel::PPPort's tooling some grief.

8 years ago[perl #123452] Fix crash with s/${<>{})//
Father Chrysostomos [Thu, 8 Jan 2015 03:33:39 +0000 (19:33 -0800)]
[perl #123452] Fix crash with s/${<>{})//

s/foo/bar/ tokenizes as something akin to subst("foo","bar") and the
resulting list op representing the contents of the parentheses is
passed to pmruntime as its expr argument.

If we have invalid code like s/${<>{})//, the bison parser will dis-
card invalid tokens until it finds something it can fall back to, in
an attempt to keep parsing (to report as many errors as possible).

In the process of discarding tokens, it may convert s/${<>{})//, which
the lexer emits like this:

    PMFUNC ( $ { THING(readline) { } ) , "" )

into this:

    PMFUNC ( $ { THING(readline) } ) , "" )

(or something similar).  So when the parser sees the first closing
parentheses, it decides it has a complete PMFUNC(...), and the expr
argument to pmruntime ends up being an rv2sv op (the ${...}), not
a list op.

pmruntime assumes it is a list op, and tries to access its op_last
field, to find the replacement part; but rv2sv has no op_last field,
so this reads past the end of the op struct, usually into the first
pointer in the next op slot, which itself is an opslot pointer, not an
op pointer, so things really screw up.

If we check that the arguments to subst are indeed a list op first
before trying to extract the replacement part, everything works.  We
get the syntax errors reported as expected, but no crash.

8 years agoUpgrade Devel::PPPort from 3.25 to 3.26 (to silence build warnings)
Matthew Horsfall (alh) [Thu, 8 Jan 2015 02:45:44 +0000 (21:45 -0500)]
Upgrade Devel::PPPort from 3.25 to 3.26 (to silence build warnings)

Thanks to Dave M. for the patches.

8 years ago[-Dusecbacktrace] Close the BFD descriptor.
Jarkko Hietaniemi [Thu, 8 Jan 2015 01:12:51 +0000 (20:12 -0500)]
[-Dusecbacktrace] Close the BFD descriptor.

Otherwise we leak several dozens of megabytes, if not more,
for each Perl_dump_c_backtrace().

8 years agoAdd Andreas Voegele to AUTHORS
Father Chrysostomos [Wed, 7 Jan 2015 22:05:49 +0000 (14:05 -0800)]
Add Andreas Voegele to AUTHORS

8 years agoAdd test for rt#123556
Andreas Voegele [Wed, 7 Jan 2015 19:36:14 +0000 (20:36 +0100)]
Add test for rt#123556

8 years agoOnly compare defined values with "ge" in Module::CoreList::first_release_raw
Andreas Voegele [Tue, 6 Jan 2015 11:05:14 +0000 (12:05 +0100)]
Only compare defined values with "ge" in Module::CoreList::first_release_raw

8 years agoperly.c: Emit nl after ‘Reading a token’
Father Chrysostomos [Wed, 7 Jan 2015 19:01:59 +0000 (11:01 -0800)]
perly.c: Emit nl after ‘Reading a token’

This makes the -DTp output easier to read.

8 years agoop.c: Remove dVAR from ck_grep
Father Chrysostomos [Wed, 7 Jan 2015 18:01:14 +0000 (10:01 -0800)]
op.c: Remove dVAR from ck_grep

It has not needed it since 3253bf854 make it call S_alloc_LOGOP
instead of accessing PL_ppaddr directly.

8 years agoop.c: Remove dVAR from newRANGE
Father Chrysostomos [Wed, 7 Jan 2015 18:00:46 +0000 (10:00 -0800)]
op.c: Remove dVAR from newRANGE

It has not needed it since 3253bf854 make it call S_alloc_LOGOP
instead of accessing PL_ppaddr directly.

8 years agoop.c: Remove dVAR from pmruntime
Father Chrysostomos [Wed, 7 Jan 2015 18:00:07 +0000 (10:00 -0800)]
op.c: Remove dVAR from pmruntime

It has not needed it since 3253bf854 make it call S_alloc_LOGOP
instead of accessing PL_ppaddr directly.

8 years agoTEST: Comment for 804352e2
Father Chrysostomos [Wed, 7 Jan 2015 17:54:52 +0000 (09:54 -0800)]
TEST: Comment for 804352e2

8 years agoAvoid glob in t/TEST on non-Windows
Father Chrysostomos [Wed, 7 Jan 2015 17:48:30 +0000 (09:48 -0800)]
Avoid glob in t/TEST on non-Windows

See ticket #123561.  The presence of ‘glob’ was causing perl to
attempt to File::Glob at compile time, before @INC is set up.

Windows needs to do file globbing on @ARGV for t/TEST to work cor-
rectly.  Windows only uses TEST for miniperl (it uses harness for
‘make test’), and under miniperl ‘glob’ doesn’t use File::Glob.  So it
is safe to use ‘glob’ on Windows.  For the sake of other systems, we
can put it in a string eval to avoid even compiling the op.

8 years agoop.c: S_maybe_targlex needs no dVAR
Father Chrysostomos [Wed, 7 Jan 2015 17:44:22 +0000 (09:44 -0800)]
op.c: S_maybe_targlex needs no dVAR

I thought it would be needed for PL_opargs, but PL_opargs is truly
global, even with PERL_GLOBAL_STRUCT.

8 years agoFix broken ext/POSIX/t/wrappers.t on Windows
Karl Williamson [Wed, 7 Jan 2015 17:31:29 +0000 (10:31 -0700)]
Fix broken ext/POSIX/t/wrappers.t on Windows

Windows doesn't have LC_MESSAGES, so skip the code if it isn't defined.

8 years agoRemove obscure "attrib -r ..\t\*.*" command from minitest recipe
Steve Hay [Wed, 7 Jan 2015 14:24:14 +0000 (14:24 +0000)]
Remove obscure "attrib -r ..\t\*.*" command from minitest recipe

This command is not run for any other test targets, and there seems to be
no point in it, at least not now, since files under t\ are not read-only

(It dates from the creation of the minitest target in commit 137443ea0a.
At that time, the same command was already used in the $(PERLEXE) target,
having been added there in the initial creation of win32/Makefile in
commit 0a753a7640. Needless to say, neither commit gives any details on
why the command was deemed necessary.)

8 years agoSilence warning during VC++/nmake build
Steve Hay [Wed, 7 Jan 2015 14:08:27 +0000 (14:08 +0000)]
Silence warning during VC++/nmake build

"Use of uninitialized value $opt{"uselongdouble"} in string eq at
config_sh.PL line 202."

Only GCC supports USE_LONG_DOUBLE, so set the option to undef for VC++.

8 years agoFix minitest (op/taint.t) for GCC 4.x
Steve Hay [Wed, 7 Jan 2015 14:02:10 +0000 (14:02 +0000)]
Fix minitest (op/taint.t) for GCC 4.x

8 years agoRemove Windows makefile support for building without PerlIO
Steve Hay [Wed, 7 Jan 2015 13:47:32 +0000 (13:47 +0000)]
Remove Windows makefile support for building without PerlIO

As noted in #123394, building without PerlIO was all but deprecated in
5.18.0 and is no longer supported by Configure on POSIX systems, so there
is no need for the Windows makefiles to provide support for it either.

Therefore, we can simply enable PerlIO in the canned configuration files
and remove any fiddling with that setting for the real configuration,
which means that miniperl will also now have PerlIO enabled without
needing the recently added change to win32.h.

8 years agoPATCH: [perl #123503] Bug in POSIX::strerror on 5.21.7
Karl Williamson [Fri, 26 Dec 2014 21:49:17 +0000 (14:49 -0700)]
PATCH: [perl #123503] Bug in POSIX::strerror on 5.21.7

There were 3 ideas for a patch: mine, Slaven's, and Father
Chrysostomos'.  I tried out all 3, and all three appear to work, without
breaking #123171.  But I chose FC's as I think it is the best.

I had to create a new .t because it turns out that the test didn't fail
when placed in the obvious test file, wrappers.t.  It appears that the
'use File::Temp' in that file perturbs things to not fail later on.
This is scary, so I created a minimal file.  I thought about using
fresh_perl, but wrappers.t needs functions from Test::More.

8 years agoAdd test case for [perl #123171]
Karl Williamson [Wed, 7 Jan 2015 04:05:43 +0000 (21:05 -0700)]
Add test case for [perl #123171]

This looks for a non-English locale to test with, as the bug appears
only in such locales.  The fix to the referenced ticket broke the .t
file in non-English locales, and this commit fixes it.  If no
non-English locale is found, the code runs anyway, using an English one.

Part of the commit came from Slaven Rezic.

8 years agoregcomp.c: Rmv no-longer-used macro and function
Karl Williamson [Mon, 5 Jan 2015 22:32:53 +0000 (15:32 -0700)]
regcomp.c: Rmv no-longer-used macro and function

There are no longer any calls to these, so can be removed.

8 years agoregcomp.c: Don't use general macro
Karl Williamson [Mon, 5 Jan 2015 22:30:42 +0000 (15:30 -0700)]
regcomp.c: Don't use general macro

The macro REGC is used to hide PASS1 behavior versus PASS2 behavior from
the caller.  But this is the last use of REGC, and it's only executed in
PASS2, so it doesn't need the generality (and obscurity) that REGC

8 years agoregcomp.c: Refactor as a result of [perl #123539]
Karl Williamson [Tue, 6 Jan 2015 20:08:06 +0000 (13:08 -0700)]
regcomp.c: Refactor as a result of [perl #123539]

The previous commit was a minimal patch for this bug, suitable for a
maintenance release.  This patch refactors that fix to eliminate special
cases (hence branches) and makes things more logical and clearer.

The original code shoe-horned two cases together that, it turns out,
should have been handled separately, and this patch does that.

The earlier code was somewhat stilted to conform with the reguni() API.
Now that reguni is no longer called, this gets cleaned up.

8 years agoPATCH: [perl #123539] regcomp.c node overrun/segfault
Karl Williamson [Tue, 6 Jan 2015 20:07:51 +0000 (13:07 -0700)]
PATCH: [perl #123539] regcomp.c node overrun/segfault

This is a minimal patch suitable for a maintenance release.  It extracts
the guts of reguni and REGC without the conditional they have.  The next
commit will do some refactoring to avoid branching and to make things

This bug is due to the current two pass structure of the Perl regular
expression compiler.  The first pass attempts to do just enough work to
figure out how much space to malloc for the compiled pattern; and the
2nd pass actually fills in the details.  One problem with this design is
that in many cases quite a bit of work is required to figure out the
size, and this work is thrown away and redone in the second pass.
Another problem is that it is easy to forget to do enough work in the
sizing pass, and that is what happened with the blamed commit.  I
understand that there are plans (God speed) to change the compiler

When not under /i matching, the size of a node that will match a
sequence of characters is just the number of bytes those characters take
up.  We have an easy way to calculate the number of bytes any code point
will occupy in UTF-8, and it's just 1 byte per code point for non-UTF-8.
So in the sizing pass, we don't actually have to figure out the
representation of the characters.  However under /i matching, we do.
First of all, matching of UTF-8 strings is done by replacing each
character of each string by its fold-case (function fc()) and then
comparing.  This is required by the nature of full Unicode matching
which is not 1-1.  If we do that replacement for the pattern at compile
time, we avoid having to do it over-and-over as pattern matching
backtracks at execution.  And because fc(x) may not occupy the same
number of bytes as x, and there is no easy way to know that size without
actually doing the fc(), we have to do the fold in the sizing pass.
Now, there are relatively few folds where sizeof(fc(x)) != sizeof(x), so
we could construct an exception table for those few cases where it is,
and look up through that.

But there is another reason that we have to fold in the sizing pass.
And that is because of the potential for multi-character folds being
split across regnodes.  The regular expression compiler generates
EXACTish regnodes for matching sequences of characters exactly or via
/i.  The limit for how many bytes in a sequence such a node can match is
255 because the length is stored in a U8.  If the pattern has a sequence
longer than that, it is split into two or more EXACTish nodes in a row.
(Actually, the compiler splits at a size much lower than that; I'm not
sure why, but then two adjoining nodes whose total sum length is at most
255 get joined later in the third, optimizing pass.)  Now consider,
matching the character U+FB03 LATIN SMALL LIGATURE FFI.  It matches the
sequence of the three characters "f f i".  Because of the design of the
regex pattern matching code, if these characters are such that the first
one or two are at the end of one EXACTish node, and the final two or one
are in another EXACTish node, then U+FB03 wrongly would not match them.
Matches can't cross node boundaries.  If the pattern were tweaked so all
three characters were in either the first or second node, then the match
would succeed.  And that is what the compiler does.  When it reaches the
node's size limit, and the final character is one that is a non-terminal
character in a multi-char fold, what's in the node is backed-off until
it ends with a character without this characteristic.  This has to be
done in the sizing pass, as we are repacking the nodes, which can affect
the size of the pattern, and we have to know what the folds are in order
to determine all this.

(We don't fold non-UTF-8 patterns.  This is for two reasons.  One is
that one character, the U+00B5 MICRO SIGN, folds to above-Latin1, and if
we folded it, we would have to change the pattern into UTF-8, and that
would slow everything down.  I've thought about adding a regnode type
for the much more common case of a sequence that doesn't have this
character in it, and which could hence be folded at compile time.  But
I've not been able to justify this because of the 2nd reason, which is
folds in this range are simple enough to be handled by an array lookup,
so folding is fast at runtime.)

Then there is the complication of matching under locale rules.  This bug
manifested itself only under /l matching.  We can't fold at pattern
compile time, because the folding rules won't be known until runtime.
This isn't a problem for non-UTF-8 locales, as all folds are 1-1, and so
there never will be a multi-char fold.  But there could be such folds in
a UTF-8 locale, so the regnodes have to be packed to work for that
eventuality.  The blamed commit did not do that, and because this issue
doesn't arise unless there is a string long enough to trigger the
problem, this wasn't found until now.  What is needed, and what this
commit does, is for the unfolded characters to be accumulated in both
passes.  The code that looks for potential multi-char fold issues
handles both folded and unfolded-inputs, so will work.