This is a live mirror of the Perl 5 development currently hosted at
7 years agoperldelta for previous commit (threads upgrade)
Steve Hay [Thu, 5 Mar 2015 23:00:35 +0000 (23:00 +0000)]
perldelta for previous commit (threads upgrade)

7 years agoUpgrade to threads 1.98
Jerry D. Hedden [Thu, 5 Mar 2015 05:28:51 +0000 (00:28 -0500)]
Upgrade to threads 1.98

7 years agolib/Config.t: Skip tests that are invalid on os390
Karl Williamson [Fri, 21 Nov 2014 16:22:53 +0000 (09:22 -0700)]
lib/Config.t: Skip tests that are invalid on os390

7 years agot/comp/require.t: No longer needed to skip on EBCDIC
Karl Williamson [Wed, 29 Oct 2014 16:08:46 +0000 (10:08 -0600)]
t/comp/require.t: No longer needed to skip on EBCDIC

7 years agot/uni/write.t: Don't skip EBCDIC tests
Karl Williamson [Mon, 9 Jun 2014 18:30:23 +0000 (12:30 -0600)]
t/uni/write.t: Don't skip EBCDIC tests

This now passes on os390

7 years agot/lib/warnings/utf8: Update skip message
Karl Williamson [Wed, 26 Jun 2013 21:28:41 +0000 (15:28 -0600)]
t/lib/warnings/utf8: Update skip message

It is not that EBCDIC platforms don't check for malformedness; it is
that a different message gets generated on them, and it's too much
bother to figure it out for each such platform.

7 years agot/ EBCDIC, utf8 fixes
Karl Williamson [Mon, 2 Mar 2015 22:03:08 +0000 (15:03 -0700)]
t/ EBCDIC, utf8 fixes

This changes the display of all low-ordinal EBCDIC controls to octal,
instead of just the ones that correspond to the ASCII C0 controls.

It also makes sure that [:print:] thinks all non-ASCII are

7 years agolib/Unicode/UCD.t: Fixes to work on EBCDIC
Karl Williamson [Mon, 2 Mar 2015 22:00:25 +0000 (15:00 -0700)]
lib/Unicode/UCD.t: Fixes to work on EBCDIC

These were broken by the upgrade of Unicode::UCD to version 0.61

7 years agolib/open.t: Fix skip count
Karl Williamson [Thu, 5 Mar 2015 19:08:48 +0000 (12:08 -0700)]
lib/open.t: Fix skip count

7 years agoData::Dumper/t/dumper.t: Fix comments
Karl Williamson [Thu, 5 Mar 2015 17:34:08 +0000 (10:34 -0700)]
Data::Dumper/t/dumper.t: Fix comments

7 years agoreadline should behave as <>, not <<>>
Rafael Garcia-Suarez [Thu, 5 Mar 2015 16:37:33 +0000 (17:37 +0100)]
readline should behave as <>, not <<>>

This fixes bug #123990. The cause was that one promotion to
OP_READLINE was not cleaning the special flag on that op.

7 years agosprinkle NOTREACHED and FALLTHROUGH
David Mitchell [Thu, 5 Mar 2015 11:44:37 +0000 (11:44 +0000)]

Coverity complains bitterly about many switch statements in lots of files.

Many of these are of the form:

    case FOO:
        goto baz;
    case BAR:

and something as smart as Coverity shouldn't really be complaining about
a missing 'break' when the last statement of the previous branch is an
unconditional goto/return/continue. But I've shoved in a bunch of
'NOTREACHED' to hopefully shut it up.

Missing 'FALLTHROUGH' comments were more reasonable, and I've added them
where appropriate.

The only confusing one was cx_dup(), where the various CXt_LOOP_ branches
all fell through to the next one, and it took a while to figure out that
those weren't bugs.

7 years agopp.c: remove unneeded SPAGAIN's
David Mitchell [Thu, 5 Mar 2015 11:01:01 +0000 (11:01 +0000)]
pp.c: remove unneeded SPAGAIN's

Spotted by Coverity.

I've left the SPAGAIN but commented out, in case future changes
to the code make them needed again.

7 years agodocument why S_maybe_multideref is Coverity-safe
David Mitchell [Thu, 5 Mar 2015 10:28:28 +0000 (10:28 +0000)]
document why S_maybe_multideref is Coverity-safe

7 years agofollowup for MEM_WRAP_CHECK
David Mitchell [Wed, 4 Mar 2015 14:49:22 +0000 (14:49 +0000)]
followup for MEM_WRAP_CHECK

On my previous commit, I failed to save the edited handy.h file where
I had edited the comments, so they were missed from the commit.

7 years agofurther tweak MEM_WRAP_CHECK()
David Mitchell [Wed, 4 Mar 2015 14:22:27 +0000 (14:22 +0000)]
further tweak MEM_WRAP_CHECK()

My recent mods to make it often constant-fold at time-time were
generating Coverity warnings when the expression happened to equal
(cond ? 1 : 1).

7 years agoConsistently use NOT_REACHED; /* NOTREACHED */
Jarkko Hietaniemi [Wed, 4 Mar 2015 12:37:33 +0000 (07:37 -0500)]
Consistently use NOT_REACHED; /* NOTREACHED */

Both needed: the macro is for compilers, the comment for static checkers.

(This doesn't address whether each spot is correct and necessary.)

7 years agoUpgrade Text-Balanced from version 2.02 to 2.03
Steve Hay [Wed, 4 Mar 2015 08:43:41 +0000 (08:43 +0000)]
Upgrade Text-Balanced from version 2.02 to 2.03

This incorporates the blead customizations, with no other changes except
the version bump.

7 years agothreads is no longer customized, as of commit c0ff91434b
Steve Hay [Wed, 4 Mar 2015 08:39:17 +0000 (08:39 +0000)]
threads is no longer customized, as of commit c0ff91434b

7 years agothreads is no longer customized, as of commit c0ff91434b
Steve Hay [Wed, 4 Mar 2015 08:14:20 +0000 (08:14 +0000)]
threads is no longer customized, as of commit c0ff91434b

7 years agoUpgrade to threads 1.97
Jerry D. Hedden [Tue, 3 Mar 2015 23:30:54 +0000 (18:30 -0500)]
Upgrade to threads 1.97

Committer actions: (1) regen for t/porting/customized.dat.
(2) perldelta for update to threads.

7 years agoIRIX: floating point: do not flush to zero
Jarkko Hietaniemi [Wed, 4 Mar 2015 00:15:25 +0000 (19:15 -0500)]
IRIX: floating point: do not flush to zero

Fix for [perl #123767] IRIX64 blead (ddce084a) opbasic/arith.t failure

Use the PERL_SYS_FPU_INIT to initialize the FPU flags appropriately.

7 years agoMake MEM_WRAP_CHECK more compile-time
David Mitchell [Thu, 26 Feb 2015 18:42:16 +0000 (18:42 +0000)]
Make MEM_WRAP_CHECK more compile-time

MEM_WRAP_CHECK(n,t) checks whether n * sizeof(t) exceeds the
memory size, and so is likely to wrap.

When the type of n is small (e.g. a U8), you used to get compiler warnings
about a comparison always being true. This was avoided by adding 0.0. Now
Coverity complains that you're doing a floating-point comparison with the
results of an integer division.

Instead of adding 0.0, instead add some more compile-time checks
that will cause the runtime check to be skipped when the maximum value
of n (as determined by sizeof(n)) is a lot less than memory size.

On my 64-bit system this also pleasingly makes the executable 8384 bytes
smaller, implying that in many cases, the run-time check is now being

7 years agoTru64: living dangerously, enabling the -c99 flag for cc
Jarkko Hietaniemi [Tue, 3 Mar 2015 01:46:53 +0000 (20:46 -0500)]
Tru64: living dangerously, enabling the -c99 flag for cc

16 years after C99 and 2 years after Tru64 EOL.

7 years agoRemove unused variable $DEBUGGING.
James E Keenan [Thu, 26 Feb 2015 14:02:19 +0000 (09:02 -0500)]
Remove unused variable $DEBUGGING.

It is unused and there do not appear to be any tests to be run for -DDEBUGGING
in this file.

7 years agoBump Locale-Codes from 3.33 to 3.34
Sullivan Beck [Mon, 2 Mar 2015 23:37:20 +0000 (18:37 -0500)]
Bump Locale-Codes from 3.33 to 3.34

The core modules Locale::Country, Locale::Language, and Locale::Currency (all
part of the Locale-Codes distribution) should be updated on a regular basis.
They contain "codes" from various Internet standards which change over time.

7 years agoregen uconfig.h
David Mitchell [Mon, 2 Mar 2015 15:50:09 +0000 (15:50 +0000)]
regen uconfig.h

Needed after 0cd93aca4e274765.

7 years agoConfigure: add note about nvsize sometimes lying
Jarkko Hietaniemi [Mon, 2 Mar 2015 12:00:33 +0000 (07:00 -0500)]
Configure: add note about nvsize sometimes lying

Lying in case you expect that many bytes being used for NV.

7 years ago[perl #123960] sv.c: Fix gp_free -Do output
Father Chrysostomos [Mon, 2 Mar 2015 06:42:04 +0000 (22:42 -0800)]
[perl #123960] sv.c: Fix gp_free -Do output

We try to print ‘gp_free clearing PL_stashcache for '%"HEKf"'’, but
without checking that we actually have a hek.  This has been this way
since 103f5a36127.

7 years agoperldelta for b6bba8869651
Tony Cook [Mon, 2 Mar 2015 06:10:15 +0000 (17:10 +1100)]
perldelta for b6bba8869651

7 years ago[perl #123947] deparse $#_ as $#_ not as $#{_}
Tony Cook [Mon, 2 Mar 2015 06:03:12 +0000 (17:03 +1100)]
[perl #123947] deparse $#_ as $#_ not as $#{_}

8c2e27d changed B::Deparse to deparse $#{1} as that instead of as $#1
which is a syntax error, but also changed $#_ to deparse as $#{_}
which isn't necessary, and broke GFUJI/macro-0.06.tar.gz

This could be considered a bug in, but since we don't need to
deparse $#_ as $#{_} let's not do that.

7 years ago[perl #123849] sv.c: Fix sv_clear -Do output
Father Chrysostomos [Mon, 2 Mar 2015 02:20:53 +0000 (18:20 -0800)]
[perl #123849] sv.c: Fix sv_clear -Do output

We try to print ‘sv_clear clearing PL_stashcache for '%"SVf"'’, but
the sv here is a hash, and we can’t do SvPV on it.  We need the hash’s
name.  This has been this way since 103f5a36127.

7 years ago[perl #123955] Fix assert fail with 0 s/// in quotes
Father Chrysostomos [Mon, 2 Mar 2015 02:11:23 +0000 (18:11 -0800)]
[perl #123955] Fix assert fail with 0 s/// in quotes

This is related to bug #123617 and is a follow-up to eabab8bcc.

This code:

"@0{0s 000";eval"$"

begins tokenisation as follows:

stringify ( join ( $ " , @ 0 { 0 subst

When seeing the subst after the 0, the parser discards many tokens and
we end up at the ; outside the quotes.

Since PL_lex_stuff (the temporary spot for storing the contents of a
quote-like operator) is localised as of eabab8bcc, we end up with just
PL_sublex_info.repl (the temporary spot for storing the replacement
part) set.  Since it is still set when we get to the next double-
quote, it is treated as a two-part quote-like operator, like y or s.
That can’t happen, and we have assertions to make sure of it.

We need to localise PL_sublex_info.repl as well, so it gets freed
properly when scopes are popped after an error.

7 years ago[perl #123848] Allow OPpTARGET_MY on qr
Father Chrysostomos [Sun, 1 Mar 2015 22:01:27 +0000 (14:01 -0800)]
[perl #123848] Allow OPpTARGET_MY on qr

// in the scope of lexical $_ gets the OPpTARGET_MY flag set.  If it
is used as an operand to smartmatch, it gets converted to a qr op.
There is no need to turn off the flag, since it is harmless at run
time.  But we need to allow the flag on this op type to avoid asser-
tion failures when it is freed.

7 years agoop.c apidoc typo
Father Chrysostomos [Sun, 1 Mar 2015 21:27:39 +0000 (13:27 -0800)]
op.c apidoc typo

7 years ago[perl #123821] Fix assert fail with \(&$0)=0
Father Chrysostomos [Sun, 1 Mar 2015 21:26:52 +0000 (13:26 -0800)]
[perl #123821] Fix assert fail with \(&$0)=0

If the operand of a reference constructor that is assigned to is not
valid, then S_lvref (in op.c) queues an error and does not bother to
convert the op into an lvref op.  This causes problems, since we have
already set lvref-specific flags on the op in the expectation that its
type will change.  We get assertion failures later when freeing the
op, because of the invalid flags.

Instead of bailing out when we have an error like this, just continue
processing it, as we do in many other places.

7 years ago[perl #123817] Assert fail with attr in anon hash
Father Chrysostomos [Sun, 1 Mar 2015 21:16:36 +0000 (13:16 -0800)]
[perl #123817] Assert fail with attr in anon hash

These two one-liners were failing an assertion:

$y = { my $x : m }
$y = [ (my $x : m) ]

The lexical with an attribute was turning into an op of type ‘list’
with the OPpLVAL_INTRO flag set.  Many op constructors convert an
operand that is of type ‘list’ into the correct type, instead of
creating a new op to wrap around it.  Other ops were not expecting the
flag to be set, causing an assertion failure.  The easiest solution is
to turn off the flag in op_convert_list, which is where the op type
changes.  (I tried modifying other op types to accept the flag, but
that caused problems for B::Deparse, which inquires of B::Op_private
which ops can legitimately take that flag.)

7 years agoop.c: Remove redundant op_lvalue call
Father Chrysostomos [Sun, 1 Mar 2015 19:43:11 +0000 (11:43 -0800)]
op.c: Remove redundant op_lvalue call

Refgen ops already call op_lvalue on their operands.  Calling it
beforehand causes it to be called twice, which is harmless, but

7 years ago[perl #123802] Assertion failure with "\L\L"
Father Chrysostomos [Sun, 1 Mar 2015 19:29:10 +0000 (11:29 -0800)]
[perl #123802] Assertion failure with "\L\L"

This is a follow-up to f4460c6f7a.  The check to see whether we are
in a quote-like operator needs to come before the call to sublex_done,
as sublex_done is just as problematic as doing SvIVX on a PV.  (See
479ae48e22f for details on why.)  Checking the type of PL_linestr is
not a reliable way to see whether we are in a quote-like op, so use
PL_in_what instead.

7 years agot/op/lex.t: Correct bug num
Father Chrysostomos [Sun, 1 Mar 2015 19:20:47 +0000 (11:20 -0800)]
t/op/lex.t: Correct bug num

7 years ago[perl #123763] Clear target on my $_; split
Father Chrysostomos [Sun, 1 Mar 2015 06:31:25 +0000 (22:31 -0800)]
[perl #123763] Clear target on my $_; split

If a lexical $_ is in scope, then the first argument to split, which
starts out as a match op, will get the pad offset of $_ as its target,
since that’s how implicit lexical $_=~ usually works.

ck_split changes that first argument to a pushre op.  The target
was not being cleared.  That did not cause any problems, until
v5.21.4-408-gfd017c0, which optimised lexical @array = split to write
to split @array directly, by storing making lexical array’s pad offset
the pushre’s target.

You can see the obvious conflict there.  We end up trying to split to
$_, which is not an array.  On a debugging build, you get an assertion
failure when trying to extend $_.  Make the split list long enough,
and you get a crash on non-debugging builds.

debugging$ ./miniperl -e 'my $_; split'
Use of my $_ is experimental at -e line 1.
Assertion failed: (SvTYPE(av) == SVt_PVAV), function Perl_av_extend, file av.c, line 70.

non-debugging$ ./miniperl -e 'my $_; split //, "a"x100000'
Use of my $_ is experimental at -e line 1.
Segmentation fault: 11

7 years agoTest for split after my $_ [perl #123763]
Father Chrysostomos [Sun, 1 Mar 2015 06:12:30 +0000 (22:12 -0800)]
Test for split after my $_ [perl #123763]

7 years ago[perl #123763] pushre needs to permit OPpTARGET_MY
Hugo van der Sanden [Sun, 1 Mar 2015 02:58:58 +0000 (18:58 -0800)]
[perl #123763] pushre needs to permit OPpTARGET_MY

This case fails an assertion:


because a pushre op is not expected to have that flag.  A pushre op
starts out as a match op (which may indeed have the flag set), as is
subsequently converted to a pushre op.

[The commit message was written by the committer.]

7 years ago[perl #123802] Assertion failure with /$0{}/
Father Chrysostomos [Sun, 1 Mar 2015 01:41:36 +0000 (17:41 -0800)]
[perl #123802] Assertion failure with /$0{}/

If the parser (perly.c) pops tokens when encountering a syntax error,
it can pop inner lexing scopes (which handle the contents of quote-
like operators).

If there is a pending token on the pending token stack, then the cur-
rent lexing state is LEX_KNOWNEXT.  It usually gets set to a pending
value stored in PL_lex_defer when the last pending token is emitted.

If scopes are exited when there is a pending token, then the state is
reset, since it is localised, even thought we still have a token pend-
ing.  We have code to account for that and still emit the pending
token.  (See 7aa8cb0dec1.)  But the pending lexing state is still
used after the pending token is emitted.  So we can end up with
LEX_INTERPEND when there is no inner lexing scope.

LEX_INTERPEND will cause sublex_done (in toke.c) to be called, which
does a LEAVE.  If the current scope does not belong to it, we end up
exiting a scope set up by the parser, which frees the parser stack
(via SAVEDESTRUCTOR_X and clear_yystack in perly.c).  The parser is
still using the stack, which holds reference counts on the CV in
PL_compcv, so reference counts get screwed up.

We need to check whether we have a proper lexing scope set up if the
lexing state is LEX_INTERPEND.

This is a follow-up to f4460c6f7a, which was a similar bug, but
occurred with LEX_INTERPCONCAT, rather than LEX_INTERPEND.

7 years agoinfnan: NV_MANT_REAL_DIG is unused
Jarkko Hietaniemi [Fri, 27 Feb 2015 21:37:57 +0000 (16:37 -0500)]
infnan: NV_MANT_REAL_DIG is unused

(now that the nan payload code is gone)

7 years agofix to "fix op leak caused by OP_MULTIDEREF"
David Mitchell [Fri, 27 Feb 2015 21:06:13 +0000 (21:06 +0000)]
fix to "fix op leak caused by OP_MULTIDEREF"

Update to b7613b8a45c70113.

Hugo pointed out that my for(; p; p = OpSIBLING(p)) op_free(p) loop
relied on p->op_sibling still being valid after op_free(p).

7 years agoRevert "perlpod and spec: s/Latin-1/CP-1252/"
Karl Williamson [Fri, 27 Feb 2015 18:57:03 +0000 (11:57 -0700)]
Revert "perlpod and spec: s/Latin-1/CP-1252/"

This reverts commit e2bb786192adfa315ea974b5f630d7040aa6f6ac.

These doc changes apply to Pod::Simple version 3.30, which, alas,  was
created too late to be included in Perl v5.22, so this change to the
docs in blead is premature.

I plan to apply the patch in 5.23.

7 years agoperlpod and spec: s/Latin-1/CP-1252/
Ricardo Signes [Fri, 27 Feb 2015 03:35:52 +0000 (22:35 -0500)]
perlpod and spec: s/Latin-1/CP-1252/

7 years agoNo Scalar::Util under fresh miniperl.
Jarkko Hietaniemi [Fri, 27 Feb 2015 03:09:55 +0000 (22:09 -0500)]
No Scalar::Util under fresh miniperl.

7 years agoinfnan: one should not define NV_NAN from NV_SNAN
Jarkko Hietaniemi [Fri, 27 Feb 2015 01:37:16 +0000 (20:37 -0500)]
infnan: one should not define NV_NAN from NV_SNAN

More generally, the NaN should be the quiet one.

7 years agoinfnan: drop NV_QNAN and NV_SNAN
Jarkko Hietaniemi [Fri, 27 Feb 2015 01:30:02 +0000 (20:30 -0500)]
infnan: drop NV_QNAN and NV_SNAN

They are unused, better keep the API small.

7 years agodo_op_dump(): handle unknown op_private enums
David Mitchell [Thu, 26 Feb 2015 15:44:04 +0000 (15:44 +0000)]
do_op_dump(): handle unknown op_private enums

Where a bitfield value in op_private doesn't correspond to any enums,
do_op_dump() is supposed to display the value as an integer (with
optional LABEL= prefix). Concise does this, do_op_dump was failing to
do this, and instead trying to display the value symbolically as string at
offset -1 in PL_op_private_labels.

This wasn't important yet as no ops currently have an unspecified enum

Spotted by Coverity.

7 years agoinit a var in sv_clear() to keep Coverity happy.
David Mitchell [Thu, 26 Feb 2015 14:31:55 +0000 (14:31 +0000)]
init a var in sv_clear() to keep Coverity happy.

When a new hash is found to iterate over, the old value of hash_index (if
any) is temporarily saved (in the new hash), then restored after the hash
has been iterated over.
This means that the first hash encountered causes the random initial
value of hash_index to be saved and then restored. This is perfectly
harmless, but makes Coverity unhappy. Since other such tools might also
in future detect such dabbling with uninitialised values, its simplest
(but unnecessary) to initialise this var to zero.

7 years agofix op leak caused by OP_MULTIDEREF
David Mitchell [Thu, 26 Feb 2015 12:59:16 +0000 (12:59 +0000)]
fix op leak caused by OP_MULTIDEREF

[perl #123922]

When converting a subtree like

    rv2sv - const



it was freeing the excised subtree, but failed to free the index
expression (the const in this case).

7 years agorestate -Dx dumping top-level subs
David Mitchell [Thu, 26 Feb 2015 11:50:19 +0000 (11:50 +0000)]
restate -Dx dumping top-level subs

Commit v5.21.3-638-g2eaf799 made compiled subs that don't have :: in their
name be stored in stashes as refs to CVs rather than as GVs. This
indirectly stopped perl -Dx from dumping such subs.

This commit reinstates the old behaviour by making
Perl_dump_packsubs_perl() upgrade the stash entry to a GV when it finds
an RV->CV.

7 years agoinfnan: salvage some docs from the too-late nan work
Jarkko Hietaniemi [Thu, 26 Feb 2015 03:51:12 +0000 (22:51 -0500)]
infnan: salvage some docs from the too-late nan work

7 years agoperldelta for ed38223246c0
Tony Cook [Thu, 26 Feb 2015 03:23:48 +0000 (14:23 +1100)]
perldelta for ed38223246c0

7 years ago[perl #123202] speed up scalar //g against tainted strings
Tony Cook [Thu, 26 Feb 2015 00:21:16 +0000 (11:21 +1100)]
[perl #123202] speed up scalar //g against tainted strings

7 years agoMissing Configure messages.
Jarkko Hietaniemi [Wed, 25 Feb 2015 12:51:53 +0000 (07:51 -0500)]
Missing Configure messages.

(The scans have been happening, the echo case branches were missing.)

7 years agolib/h2ph.t to test generated t/ instead of the system one
Petr Písař [Tue, 17 Feb 2015 12:11:00 +0000 (13:11 +0100)]
lib/h2ph.t to test generated t/ instead of the system one

The lib/h2ph.t test executes a t/lib/h2ph.pht which requires
''.  This should find and exercise generated t/
file. However, it found a loaded from system because the
interpreter has the './' directory after the system paths in the @INC by

This patch adds '-I./' to the runperl() invocation to prefer the generated at build time.

Signed-off-by: Petr Písař <>
7 years agofix some spurious PERL_UNUSED_ARG/VAR() usage
Jasmine Ngan [Tue, 24 Feb 2015 14:37:17 +0000 (14:37 +0000)]
fix some spurious PERL_UNUSED_ARG/VAR() usage

The 'output_warning' param is actually used, and 'items' is not a function
argument but a local variable.

7 years agosilence some compiler warnings.
David Mitchell [Tue, 24 Feb 2015 12:12:21 +0000 (12:12 +0000)]
silence some compiler warnings.

(Some compilers have strange ideas about the signedness of the bool type
verses the signedness of a boolean expression like a == b).

7 years agoUpdate Getopt-Long to CPAN version 2.45
Chris 'BinGOs' Williams [Mon, 23 Feb 2015 19:41:50 +0000 (19:41 +0000)]
Update Getopt-Long to CPAN version 2.45


Changes in version 2.45

* Revert behaviour of the combination of <> and pass_through to what
  is was in 2.42.

  Thanks to Wilson Snyder to provide enhancements to the documentation
  to clarify why <> and pass_through generally is a bad idea.

  It is, however, very unfortunate to hear from users that their
  programs *depend* on the undocumented pre-2.43 behaviour.

7 years ago[perl #123801] Stop s##[}#e from crashing
Father Chrysostomos [Sun, 22 Feb 2015 22:34:42 +0000 (14:34 -0800)]
[perl #123801] Stop s##[}#e from crashing

The lexer normally turns s##...#e into

PMFUNC '(' WORD '/' DO '{' ... ';' '}' ')'

If you have [} inside the replacement, that becomes '[' ';' '}'.  When
the parser gets to the second semicolon, it pops scopes to try to
recover from the syntax error, and in so doing it exits the inner lex-
ing scope that was set up for the substitution.

When that happens, the second '}' is already on the pending token
stack.  Since we set the lexing state to LEX_KNOWNEXT when there is a
pending token (though we may not have to; see 7aa8cb0dec1), we have to
record a pending state as well, so we know what to set the state back
to.  That pending state is not localised, and, in this case, was set
before the scopes were popped.

So we end up in the outermost lexing scope, with the lexing state set

Inside an inner lexing scope, PL_linestr is of type PVIV, with the IVX
field used to hold extra information about the type of quote.  In the
main lexing scope, PL_linestr is an SVt_PV with no IVX field.

If the lexing state is LEX_INTERPanything, it is assumed that
PL_linestr has an IVX field, which is not the case here, so we fail an
assertion or crash.

The safest pre-5.22 solution is to check the type of PL_linestr before
reading IVX.

7 years agoparser.h: Make nexttoke unsigned
Father Chrysostomos [Sun, 22 Feb 2015 19:26:15 +0000 (11:26 -0800)]
parser.h: Make nexttoke unsigned

This is to avoid a compiler warning at toke.c:1912 (the assertion in
S_force_next).  The only values this member can contain are 0 to 5, so
this change is safe.  (I’ll probably change it to U8 after 5.22.)

7 years agoTest-Simple PR#494 was merged; t/Legacy/exit.t is no longer customized in blead
Steve Hay [Sun, 22 Feb 2015 15:45:28 +0000 (15:45 +0000)]
Test-Simple PR#494 was merged; t/Legacy/exit.t is no longer customized in blead

7 years agoRemove three Test-Simple files which are no longer in Test-Simple on CPAN
Steve Hay [Sun, 22 Feb 2015 15:38:18 +0000 (15:38 +0000)]
Remove three Test-Simple files which are no longer in Test-Simple on CPAN

7 years agoblead doesn't include cpan/perlfaq/inc/
Steve Hay [Sun, 22 Feb 2015 15:32:58 +0000 (15:32 +0000)]
blead doesn't include cpan/perlfaq/inc/

7 years agoPod::Parser is no longer customized in blead, since commit 534577b24e
Steve Hay [Sun, 22 Feb 2015 15:29:06 +0000 (15:29 +0000)]
Pod::Parser is no longer customized in blead, since commit 534577b24e

7 years ago[perl #123893] Fix hang with "@{"
Father Chrysostomos [Sun, 22 Feb 2015 06:24:20 +0000 (22:24 -0800)]
[perl #123893] Fix hang with "@{"

Commit v5.21.8-320-ge47d32d stopped code interpolated into quote-like
operators from reading more lines of input, by making lex_next_chunk
ignore the open filehandle and return false.  That causes this block
under case 0 in yylex to loop:

    if (!lex_next_chunk(fake_eof)) {
s = PL_bufptr;
TOKEN(';'); /* not infinite loop because rsfp is NULL now */

(rsfp is not null there.)  This commit makes it check for quote-like
operators above, in the same place where it checks whether the file is
open, to avoid falling through to this code that can loop.

This changes the syntax errors for a couple of cases recently added
to t/op/lex.t, though I think the error output is now more consis-
tent overall.

7 years agoperlrebackslash: Amplify and correct \b{sb}, \b{wb}
Karl Williamson [Sat, 21 Feb 2015 19:16:40 +0000 (12:16 -0700)]
perlrebackslash: Amplify and correct \b{sb}, \b{wb}

7 years agoperlrecharclass: \R could be inside a [...]
Karl Williamson [Sat, 21 Feb 2015 19:12:35 +0000 (12:12 -0700)]
perlrecharclass: \R could be inside a [...]

But we haven't made it so.  So remove the text saying that it can't.
For a couple of releases now, we have allowed something that can match
more than one character to be inside a non-complemented bracketed
character class, so this could too, should we choose to someday.

7 years ago\s matching VT is no longer experimental
Karl Williamson [Fri, 20 Feb 2015 18:10:05 +0000 (11:10 -0700)]
\s matching VT is no longer experimental

This was experimentally introduced in 5.18, and no issues were raised,
except that it got us to thinking and spurred us to stop allowing $^X,
where 'X' is a non-printable control character, and that change caused
some issues.

7 years agocharclass_invlists.h: Add regen entry
Karl Williamson [Fri, 20 Feb 2015 18:09:41 +0000 (11:09 -0700)]
charclass_invlists.h: Add regen entry

This missing entry is one used by t/porting/regen.t to see if the
contents are up-to-date.  I don't know why it didn't get added earlier,
and why there aren't failures except apparently on my machine due to
it's not being there.  I thought I took great care in getting it right.

7 years agoperlunitut, perlreref: Nits
Karl Williamson [Fri, 20 Feb 2015 17:12:52 +0000 (10:12 -0700)]
perlunitut, perlreref: Nits

Spotted by Tom Christiansen

7 years agoBump $VERSION in CPAN modules changed since 5.21.9
Steve Hay [Sat, 21 Feb 2015 18:17:38 +0000 (18:17 +0000)]
Bump $VERSION in CPAN modules changed since 5.21.9

7 years agoUpgrade CPAN from version 2.05 to 2.09-TRIAL
Steve Hay [Sat, 21 Feb 2015 18:06:25 +0000 (18:06 +0000)]
Upgrade CPAN from version 2.05 to 2.09-TRIAL

7 years agoPorting/bump-perl-version: No need to try other maps after one has worked
Steve Hay [Thu, 19 Feb 2015 08:42:46 +0000 (08:42 +0000)]
Porting/bump-perl-version: No need to try other maps after one has worked

7 years agoModule-CoreList-5.20150220 is now on CPAN
Steve Hay [Sat, 21 Feb 2015 16:44:31 +0000 (16:44 +0000)]
Module-CoreList-5.20150220 is now on CPAN

7 years agoOne $VERSION bump missed by 2f553ae1e1
Steve Hay [Sat, 21 Feb 2015 16:11:33 +0000 (16:11 +0000)]
One $VERSION bump missed by 2f553ae1e1

7 years agoUpdate Getopt-Long to CPAN version 2.44
Chris 'BinGOs' Williams [Sat, 21 Feb 2015 13:08:08 +0000 (13:08 +0000)]
Update Getopt-Long to CPAN version 2.44


Changes in version 2.44

* Be gentle to the user community and turn fix 92462 into a warning.
  This may be changed back to error in some future release.

7 years agoadd missing infnan context under thread/quadmath builds
Lukas Mai [Sat, 21 Feb 2015 10:29:45 +0000 (11:29 +0100)]
add missing infnan context under thread/quadmath builds

7 years agotweak version number of Module::CoreList
Sawyer X [Sat, 21 Feb 2015 07:27:54 +0000 (08:27 +0100)]
tweak version number of Module::CoreList

7 years agoadd some dummy entries to Module::CoreList for 5.21.10
Sawyer X [Sat, 21 Feb 2015 06:54:55 +0000 (07:54 +0100)]
add some dummy entries to Module::CoreList for 5.21.10

7 years agoadded link to announcement
Sawyer X [Sat, 21 Feb 2015 06:44:28 +0000 (07:44 +0100)]
added link to announcement

7 years agonew delta for 5.21.10
Sawyer X [Sat, 21 Feb 2015 06:15:31 +0000 (07:15 +0100)]
new delta for 5.21.10

7 years agoadd my epigraph, tick 5.21.9 release
Sawyer X [Sat, 21 Feb 2015 06:06:54 +0000 (07:06 +0100)]
add my epigraph, tick 5.21.9 release

7 years agoadd new release to perlhist v5.21.9
Sawyer X [Sat, 21 Feb 2015 04:03:37 +0000 (05:03 +0100)]
add new release to perlhist

7 years agofinalize perldelta and Module::CoreList updates
Sawyer X [Sat, 21 Feb 2015 03:39:03 +0000 (04:39 +0100)]
finalize perldelta and Module::CoreList updates

7 years agofix typos
Sawyer X [Sat, 21 Feb 2015 03:34:46 +0000 (04:34 +0100)]
fix typos

7 years agoUpdate Module::CoreList for 5.21.9
Sawyer X [Sat, 21 Feb 2015 02:03:13 +0000 (03:03 +0100)]
Update Module::CoreList for 5.21.9

7 years agopodcheck: accept links to autobox
Ricardo Signes [Sat, 21 Feb 2015 01:14:28 +0000 (20:14 -0500)]
podcheck: accept links to autobox

7 years agoUpdate perldelta
Sawyer X [Sat, 21 Feb 2015 00:10:25 +0000 (01:10 +0100)]
Update perldelta

7 years agopp_pack.c: Silence compiler warning
Karl Williamson [Fri, 20 Feb 2015 16:27:16 +0000 (09:27 -0700)]
pp_pack.c: Silence compiler warning

This was introduced by 9df874cdaa2f196cc11fbd7b82a85690c243eb9f
in changing the name of some static functions.  I didn't realize at the
time that the function was defined in embed.fnc, as none of the others
are, and it was always called with the S_ prefix form.  Nor did I notice
the compiler warnings.

It turns out that the base name of this function is the same as a public
function, so I've renamed it to have prefix 'S_my_'.

7 years agoupdate perldelta for some modules and pragmas upgrades
Sawyer X [Fri, 20 Feb 2015 07:28:20 +0000 (08:28 +0100)]
update perldelta for some modules and pragmas upgrades

7 years agoperldelta for e47d32dcd and d27f4b91 / #123712
Father Chrysostomos [Fri, 20 Feb 2015 06:40:29 +0000 (22:40 -0800)]
perldelta for e47d32dcd and d27f4b91 / #123712

7 years agoperldelta for parser crashes
Father Chrysostomos [Fri, 20 Feb 2015 06:36:53 +0000 (22:36 -0800)]
perldelta for parser crashes


7 years agoperldelta for df442ae4d / #123466
Father Chrysostomos [Fri, 20 Feb 2015 06:31:24 +0000 (22:31 -0800)]
perldelta for df442ae4d / #123466

7 years agoperldelta for 2f465e08e / #123652
Father Chrysostomos [Fri, 20 Feb 2015 06:26:25 +0000 (22:26 -0800)]
perldelta for 2f465e08e / #123652

7 years agoregcomp.c: Add assertion
Karl Williamson [Fri, 20 Feb 2015 04:03:44 +0000 (21:03 -0700)]
regcomp.c: Add assertion