3 hours agoChange wording of warning due to Unicode Standard change blead
Karl Williamson [Wed, 13 May 2015 23:57:06 +0000]
Change wording of warning due to Unicode Standard change

Non-characters are no longer forbidden as of Unicode 7.0; they are just
"not recommended".  The wording of the warning changes accordingly.

4 hours agoRegenerate Configure after backports and small fixes
H.Merijn Brand [Mon, 6 Jul 2015 14:02:15 +0000]
Regenerate Configure after backports and small fixes

11 hours agofix variable name in case of unknown NAN
H.Merijn Brand [Mon, 6 Jul 2015 07:06:10 +0000]
fix variable name in case of unknown NAN

11 hours agoCreate try.c afresh for pointersize test
H.Merijn Brand [Mon, 6 Jul 2015 06:31:24 +0000]
Create try.c afresh for pointersize test

12 hours agoSome nits in perlsub
Rafael Garcia-Suarez [Mon, 6 Jul 2015 06:09:04 +0000]
Some nits in perlsub

- DOES was not listed in the list of methods with reserved names
- Remove one useless instance of empty list assignment
- Punctuation

46 hours agoperldelta for the shift work.
Jarkko Hietaniemi [Sat, 4 Jul 2015 19:49:23 +0000]
perldelta for the shift work.

2 days agoperlcommunity.pod updates
Herbert Breunung [Sat, 4 Jul 2015 13:36:48 +0000]
perlcommunity.pod updates

edits by rjbs

2 days agorestore the perldelta changes moved from perl5230delta
Ricardo Signes [Sat, 4 Jul 2015 02:54:53 +0000]
restore the perldelta changes moved from perl5230delta

i.e., move them from perl5230delta to the 5.23.1 delta where they

This does not re-add the module changes, as those can be generated
automatically when needed.

2 days agoremove things added to v5.23.0 delta but meant for v5.23.1
Ricardo Signes [Sat, 4 Jul 2015 02:53:10 +0000]
remove things added to v5.23.0 delta but meant for v5.23.1

2 days agobelatedly set up delta for 5.23.1
Ricardo Signes [Sat, 4 Jul 2015 02:47:23 +0000]
belatedly set up delta for 5.23.1

2 days agoFix skip count for non-fchdir like win32.
Jarkko Hietaniemi [Sat, 4 Jul 2015 00:21:47 +0000]
Fix skip count for non-fchdir like win32.

2 days agoTest the warnings.
Jarkko Hietaniemi [Fri, 3 Jul 2015 21:26:57 +0000]
Test the warnings.

Also allow running the test from the top level: ./miniperl t/op/chdir.t

2 days agoSuperfluous null ptr test warnings by clang 3.7
Jarkko Hietaniemi [Fri, 3 Jul 2015 21:17:51 +0000]
Superfluous null ptr test warnings by clang 3.7

... nonnull parameter 'stash' will evaluate to 'true' on
first encounter [-Wpointer-bool-conversion]

For similar changes, see 3dc78631ef832e5b64aa86228917984dc5b14f5e

3 days agogcc 5.1.0 thinks RETVAL might end up unset.
Jarkko Hietaniemi [Fri, 3 Jul 2015 14:34:39 +0000]
gcc 5.1.0 thinks RETVAL might end up unset.

3 days agoLeft overshift of negatives under use integer was still wrong.
Jarkko Hietaniemi [Fri, 3 Jul 2015 13:32:13 +0000]
Left overshift of negatives under use integer was still wrong.

Follow-up on b3498293: the -1 stuckiness on overshift should apply
only on right shift, not left shift (which should return zero).

3 days agoNon-invasive mojibake fixes
Stanislaw Pusep [Tue, 23 Jun 2015 09:43:10 +0000]
Non-invasive mojibake fixes

Fixing minor encoding inconsistencies found by scan_mojibake utility
This patch is touching only comments/POD/__DATA__

3 days agoperldelta entry for 054a3baf7ca16fe.
Craig A. Berry [Thu, 2 Jul 2015 22:48:40 +0000]
perldelta entry for 054a3baf7ca16fe.

3 days agoRemove gettimeofday() workarounds for VMS in util.c.
Craig A. Berry [Thu, 2 Jul 2015 22:49:48 +0000]
Remove gettimeofday() workarounds for VMS in util.c.

VMS has had gettimeofday() since v7.0, released in 1999, so there's
no reason now to be special casing native workarounds.

5 days agoVarious corrections to Porting/Maintainers.pl
Steve Hay [Wed, 1 Jul 2015 07:47:51 +0000]
Various corrections to Porting/Maintainers.pl

6 days agoUpgrade Encode from version 2.73 to 2.75
Steve Hay [Tue, 30 Jun 2015 12:37:33 +0000]
Upgrade Encode from version 2.73 to 2.75

6 days agoUpgrade Socket from version 2.019 to 2.020
Steve Hay [Tue, 30 Jun 2015 07:51:45 +0000]
Upgrade Socket from version 2.019 to 2.020

7 days agoRemove NEW_ from PERL_NEW_COPY_ON_WRITE
Father Chrysostomos [Mon, 29 Jun 2015 01:30:29 +0000]

7 days agoRemove SvRELEASE_IVX
Father Chrysostomos [Mon, 29 Jun 2015 01:27:45 +0000]

Now that PERL_OLD_COPY_ON_WRITE is gone, it no longer does anything.

7 days agoRemove PERL_OLD_COPY_ON_WRITE
Father Chrysostomos [Mon, 29 Jun 2015 01:26:42 +0000]

7 days ago[perl #125305] handle chdir to closed handle correctly
Tony Cook [Thu, 25 Jun 2015 03:58:57 +0000]
[perl #125305] handle chdir to closed handle correctly

7 days agobop.t -w clean
Jarkko Hietaniemi [Sun, 28 Jun 2015 15:32:43 +0000]
bop.t -w clean

7 days agoDocument the new shift behaviors.
Jarkko Hietaniemi [Sun, 28 Jun 2015 12:47:25 +0000]
Document the new shift behaviors.

7 days agoExplicitly mention that even negative shiftees become UVs first.
Jarkko Hietaniemi [Sun, 28 Jun 2015 12:41:34 +0000]
Explicitly mention that even negative shiftees become UVs first.

7 days agoDefine left/right shift by negative to mean the reverse shift
Jarkko Hietaniemi [Sun, 28 Jun 2015 02:51:38 +0000]
Define left/right shift by negative to mean the reverse shift

Coverity CIDs 104765 and 104766

While at it, also define shifting by more than wordsize in bits to be
zero, except that undef 'use integer' (use IVs) right overshift for
negative shiftees means -1.  (This is another corner where C leaves
things undefined.  A common behavior is "shift by modulo worbits",
so that e.g. 1 >> 64 == 1 >> (64 % 64) == 1 >> 0, but this is completely
accidental.)  (Coverity didn't flag this, harder to detect statically.)

Discussion thread at

8 days agoRequire v7.3-2 or later for VMS builds.
Craig A. Berry [Sun, 28 Jun 2015 17:37:27 +0000]
Require v7.3-2 or later for VMS builds.

OpenVMS v7.3-2 was released in 2003.  Regular support ended in 2006
and even prior version support will be ending in 2015, so this
seems like a pretty generous minimum for future Perl versions.

A side of effect of this is that OpenVMS VAX will no longer be
supported.  The terminal software release for VAX was v7.3 in 2001
with support ending in 2012.  VAX was a truly great architecture
in the 1970s, 1980s, and 1990s, but it's just missing too many of
the things expected in architectures, file systems and C run-times
of the current century.

De-supporting this older stuff allows quite a bit of code removal
and simplification, hopefully easing the maintenance burden a bit.

8 days agoThe postderef feature is no longer experimental
Aaron Crane [Thu, 11 Jun 2015 12:26:53 +0000]
The postderef feature is no longer experimental

As proposed by RJBS.

The "5.24" feature bundle (and therefore C<< use v5.24 >>) now enable
postderef and postderef_qq.

I can't find any precedent for what to do with the relevant experimental::*
warnings category when an experimental feature graduates to acceptance. I
have elected to leave the category in place, so that code doing C<< no
warnings "experimental::postderef" >> will continue to work. This means that
C<< use warnings "experimental::postderef" >> is also accepted, but has no

8 days agoPorting/bisect-runner.pl: Wrap pod lines to 79 cols
Karl Williamson [Sat, 27 Jun 2015 18:57:03 +0000]
Porting/bisect-runner.pl: Wrap pod lines to 79 cols

9 days agoIncrement $VERSION in 4 .pm files whose .xs has changed.
James E Keenan [Sat, 27 Jun 2015 17:51:28 +0000]
Increment $VERSION in 4 .pm files whose .xs has changed.


9 days agoMissing breaks.
Jarkko Hietaniemi [Wed, 24 Jun 2015 22:45:16 +0000]
Missing breaks.

Coverity CIDs 118700 and 118701.

9 days agoCannot truncate to negative size.
Jarkko Hietaniemi [Fri, 26 Jun 2015 00:03:38 +0000]
Cannot truncate to negative size.

Coverity CID 104848

9 days agomkdir() mode is unsigned.
Jarkko Hietaniemi [Thu, 25 Jun 2015 01:25:44 +0000]
mkdir() mode is unsigned.

Coverity CID 104787.

Of course we could join the new millennium and use mode_t.

9 days agogid_t signedness.
Jarkko Hietaniemi [Thu, 25 Jun 2015 01:23:06 +0000]
gid_t signedness.

Coverity CID 104786.

9 days agoself cannot be NULL here because PerlIO_push() will deref it.
Jarkko Hietaniemi [Thu, 25 Jun 2015 00:54:07 +0000]
self cannot be NULL here because PerlIO_push() will deref it.

Coverity CID 104779.

Follow-up on Coverity CID 28973, and the respective commit 316ebaf2.

9 days agoassert(arg) before derefing it since it can be NULL.
Jarkko Hietaniemi [Thu, 25 Jun 2015 01:03:21 +0000]
assert(arg) before derefing it since it can be NULL.

Coverity CID 104813.

9 days agoassert(cSVOPo) before derefing it.
Jarkko Hietaniemi [Thu, 25 Jun 2015 00:19:55 +0000]
assert(cSVOPo) before derefing it.

9 days agoassert(key) before it is derefed.
Jarkko Hietaniemi [Wed, 24 Jun 2015 23:52:27 +0000]
assert(key) before it is derefed.

Coverity CID 104855.

9 days agoassert(perinterp_sv) before sv_setiv() derefs NULL.
Jarkko Hietaniemi [Thu, 25 Jun 2015 00:14:39 +0000]
assert(perinterp_sv) before sv_setiv() derefs NULL.

Coverity CID 104842.

9 days agoCheck success of store().
Jarkko Hietaniemi [Thu, 25 Jun 2015 00:00:55 +0000]
Check success of store().

Coverity CID 118699.

9 days agoThere is no SSize_t_size.
Jarkko Hietaniemi [Thu, 25 Jun 2015 01:58:51 +0000]
There is no SSize_t_size.

Coverity CID 104775.

Seemed to be the only one.

9 days agoIf IVSIZE == LONGSIZE, long cannot be beyond IV_MIN/IV_MAX.
Jarkko Hietaniemi [Wed, 24 Jun 2015 02:28:57 +0000]
If IVSIZE == LONGSIZE, long cannot be beyond IV_MIN/IV_MAX.

It can be if LONGSIZE > IVSIZE, which should be rather rare
(since Perl aims for at least long, someone would have to
force IV to be 32 bits?)

Coverity CID 104770.

9 days agolseek() SEEK_SET pos may not be negative
Jarkko Hietaniemi [Fri, 26 Jun 2015 12:03:14 +0000]
lseek() SEEK_SET pos may not be negative

Coverity CID 104832

9 days agonl_langinfo code can be negative.
Jarkko Hietaniemi [Thu, 25 Jun 2015 12:41:13 +0000]
nl_langinfo code can be negative.

Coverity CID 104814.

9 days agostrtol and strtoul base should be [2, 36] or zero.
Jarkko Hietaniemi [Tue, 23 Jun 2015 11:21:03 +0000]
strtol and strtoul base should be [2, 36] or zero.

Coverity CID 104817 and CID 104836.

9 days agoshmat id can be invalid.
Jarkko Hietaniemi [Tue, 23 Jun 2015 11:30:58 +0000]
shmat id can be invalid.

Coverity CID 104852.

9 days agomsgrcv id can be invalid.
Jarkko Hietaniemi [Tue, 23 Jun 2015 11:32:43 +0000]
msgrcv id can be invalid.

Coverity CID 104825.

9 days agomsgsnd id can be invalid.
Jarkko Hietaniemi [Tue, 23 Jun 2015 11:26:46 +0000]
msgsnd id can be invalid.

Coverity CID 104833.

9 days agotcsetattr optional_actions can be invalid.
Jarkko Hietaniemi [Thu, 25 Jun 2015 12:56:59 +0000]
tcsetattr optional_actions can be invalid.

Coverity CID 104815.

9 days agotcsetattr fd can be bad.
Jarkko Hietaniemi [Tue, 23 Jun 2015 11:12:08 +0000]
tcsetattr fd can be bad.

Coverity CID 104815

9 days agodup2 fds can be bad.
Jarkko Hietaniemi [Tue, 23 Jun 2015 10:58:35 +0000]
dup2 fds can be bad.

Coverity CID 104812.

9 days agotcdrain fd can be bad.
Jarkko Hietaniemi [Tue, 23 Jun 2015 11:28:57 +0000]
tcdrain fd can be bad.

Coverity CID 104838.

9 days agotcflush/tcflow/tcsendbreak fd/action can be bad.
Jarkko Hietaniemi [Tue, 23 Jun 2015 10:55:45 +0000]
tcflush/tcflow/tcsendbreak fd/action can be bad.

Coverity CID 104807.

9 days agolseek fd can be bad.
Jarkko Hietaniemi [Tue, 23 Jun 2015 10:51:37 +0000]
lseek fd can be bad.

Coverity CID 104788

9 days agoImpossible for entry to be NULL at this point.
Jarkko Hietaniemi [Tue, 23 Jun 2015 02:47:50 +0000]
Impossible for entry to be NULL at this point.

740        if (return_svp) {
           notnull: At condition entry, the value of entry cannot be NULL.
           dead_error_condition: The condition entry must be true.

CID 104777: Logically dead code (DEADCODE)
dead_error_line: Execution cannot reach the expression NULL inside this statement: return entry ? (void *)&ent....
741            return entry ? (void *) &HeVAL(entry) : NULL;

9 days agoHaving both assert() and if () for maxlen is redundant.
Jarkko Hietaniemi [Tue, 23 Jun 2015 02:25:52 +0000]
Having both assert() and if () for maxlen is redundant.

Coverity CID 104784

9 days agoCannot do much if putc fails in debug output.
Jarkko Hietaniemi [Tue, 23 Jun 2015 01:57:36 +0000]
Cannot do much if putc fails in debug output.

Coverity CID 104782 (only flagged the deb.c spot)

9 days agomg_find can return NULL.
Jarkko Hietaniemi [Tue, 23 Jun 2015 01:46:09 +0000]
mg_find can return NULL.

CID 104831: Dereference null return value (NULL_RETURNS)
43. dereference: Dereferencing a pointer that might be null Perl_mg_find(sv, 112) when calling Perl_magic_existspack. (The dereference is assumed on the basis of the 'nonnull' parameter attribute.)
499                magic_existspack(svret, mg_find(sv, PERL_MAGIC_tiedelem));

9 days agoPossible NULL cxt derefs.
Jarkko Hietaniemi [Tue, 23 Jun 2015 01:31:36 +0000]
Possible NULL cxt derefs.

Coverity CIDs 104819, 104820, 104821, 104827, 104859, 104860

Using assert() instead of Storable ASSERT() because Coverity
understands the first one.

9 days agosizeof * and sizeof ** not necessarily the same.
Jarkko Hietaniemi [Mon, 22 Jun 2015 23:05:51 +0000]
sizeof * and sizeof ** not necessarily the same.

Coverity CID 104792.

9 days agofileno might return negative.
Jarkko Hietaniemi [Mon, 22 Jun 2015 11:25:27 +0000]
fileno might return negative.

(Coverity CID 104853)

Also rewrite the fstat call to test for zero (success) explicitly,
instead of the sneaky bang-negation.

9 days agosleep() with negative argument makes no sense.
Jarkko Hietaniemi [Mon, 22 Jun 2015 10:50:34 +0000]
sleep() with negative argument makes no sense.

Give by default a warning, do not sleep, and return zero.

(the signedness problem detected by Coverity, CID 104844)

Other options would include not giving a warning at all,
giving a warning only if asked, and finally croaking.
(Python had this problem earlier, and chose croaking.)

Earlier discussion in

See also:

9 days agoalarm() with negative argument makes no sense.
Jarkko Hietaniemi [Thu, 5 Mar 2015 12:57:14 +0000]
alarm() with negative argument makes no sense.

Give by default a warning, do not set the alarm, and return undef.

(the signedness problem detected by Coverity, CID 104837)

alarm() takes and returns unsigned int, not signed.

In other words, the C library function alarm() cannot fail, ever.
See for example:


9 days agoUpdate File::Spec advice in perlport.
Craig A. Berry [Fri, 26 Jun 2015 21:50:27 +0000]
Update File::Spec advice in perlport.

Eighteen years ago, with Mac OS Classic in full swing and Unix
emulation on VMS spotty or non-existent, it made some sense to
reach for File::Spec sooner rather than later.  This is no longer
sound advice, so attempt to describe succinctly how things
actually work now, fix the broken examples, and drop the ancient
history of the File::Spec module.

9 days agoFix Pod::Simple tests that use catdir on non-directories.
Craig A. Berry [Fri, 26 Jun 2015 20:10:18 +0000]
Fix Pod::Simple tests that use catdir on non-directories.

Also sent upstream as:


10 days agoCorrect t/op/chdir.t test count following b4929cb48878.
Craig A. Berry [Fri, 26 Jun 2015 12:24:30 +0000]
Correct t/op/chdir.t test count following b4929cb48878.

10 days agoCorrect errno value in vms/vms.c's home-grown chdir.
Craig A. Berry [Fri, 26 Jun 2015 10:41:48 +0000]
Correct errno value in vms/vms.c's home-grown chdir.

It appears that in 09f253ec43d3a97e7 I made a guess without
consulting the standard, which in fact specifies that ENOENT
should be set when the input path is an empty string.  We now
test for the standard behavior as of b4929cb48878718c, and this
change gets that passing again.

10 days agoRemove unused variables from t/op/chdir.t.
Craig A. Berry [Fri, 26 Jun 2015 10:39:48 +0000]
Remove unused variables from t/op/chdir.t.

10 days agoAdd a direct link to perldelta in the release announcement
Max Maischein [Sun, 7 Jun 2015 15:13:25 +0000]
Add a direct link to perldelta in the release announcement

As the release announcement itself only contains the SHA1 digests and
not much information on the changes with this release, providing
a direct link to where the information is available seems to be wanted.

12 days agomake Encode compile under -pedantic
David Mitchell [Tue, 23 Jun 2015 10:12:40 +0000]
make Encode compile under -pedantic

enc2xs generates some C code which contains tables. These tables contain
recursive and mutually recursive pointers to other tables. Normally they
are declared as 'static const', except under C++ which can't handle this,
so there they are declared 'extern' and defined ''.

-Wc++-compat and -pedantic put a bit of a spanner in the works.
There is an existing hack to shut up a warning with -Wc++-compat by not
including the table's size in the forward declaration, but this breaks

This commit does two things to enc2xs. First it moves all the logic that
examines the build options and decides whether to use 'const' etc, into
a separate function, compiler_info().  Second, it fixes the -pedantic
compilation failure by, in the presence of both -Wc++-compat and
-pedantic, falling back to a C++-style compile without the 'static const'.

This is monkey-patching an unstream-CPAN module in core due to it failing
one of the smoke configurations.

12 days agoMake the LoTR quote of reentr.c formatted more like the others.
Jarkko Hietaniemi [Wed, 24 Jun 2015 03:33:23 +0000]
Make the LoTR quote of reentr.c formatted more like the others.

(Note: the p.260 is my best estimate since I don't have
 the same edition as tchrist)

12 days agofix si_names context debugging names
David Mitchell [Wed, 24 Jun 2015 07:57:41 +0000]
fix si_names context debugging names

I recently added a new context stack type, MULTICALL. The table
si_names[], which contains the stack type names to display with
-Dsv a new label added, "MULTICALL", but the previous label didn't
have a comma after it, so the two labels were actually being concatenated.

Spotted by Coverity

12 days agofix harmless(ish) thinko in pp_return
David Mitchell [Wed, 24 Jun 2015 07:52:14 +0000]
fix harmless(ish) thinko in pp_return

My recently added Move() is moving an array of SV*'s, not SV**'s.
Spotted by Coverity.

13 days agofix punctuation in Tolkien quote in regexec.c
Chas. Owens [Tue, 23 Jun 2015 12:52:45 +0000]
fix punctuation in Tolkien quote in regexec.c


2 weeks agodo not try printing undef
Ricardo Signes [Mon, 22 Jun 2015 14:57:04 +0000]
do not try printing undef

2 weeks agoUpdate autodie to CPAN version 2.28
Chris 'BinGOs' Williams [Mon, 22 Jun 2015 12:28:06 +0000]
Update autodie to CPAN version 2.28


2.28      2015-06-22 16:20:35+10:00 Australia/Melbourne

        * TEST BUG: Properly skip the Import::Into test if the
          version of Import::Into is insufficent.  Thanks to
          Olivier MenguĂ©.  (GH#67)

        * DOC: Document change in 2.27 that was omitted from the
          Changes-file by mistake.

2 weeks agoUpdate Getopt-Long to CPAN version 2.47
Chris 'BinGOs' Williams [Mon, 22 Jun 2015 12:06:17 +0000]
Update Getopt-Long to CPAN version 2.47


Changes in version 2.47

* Fix bug https://rt.cpan.org/Ticket/Display.html?id=89513.

  Should have done that earlier :)

  This changes the format for accepted float numbers:

  <optional sign>
  <optional mantissa>
  <optional dec.point and fraction>
  <optional "e" and exponent>

  Mantissa and decimal fraction may not both be omitted.

  Underscores are permissible virtually anywhere in numbers for clarity.

2 weeks agoRespect hashbangs containing perl6
Leon Timmermans [Sun, 19 Apr 2015 11:03:28 +0000]
Respect hashbangs containing perl6

2 weeks agoIncrease the maximal size of the string displayed in non-numeric warnings
Rafael Garcia-Suarez [Mon, 22 Jun 2015 07:46:18 +0000]
Increase the maximal size of the string displayed in non-numeric warnings

This has the interesting side-effect of "fixing" some of the UTF-8
glob warnings, which indicates that sv_uni_display is probably not
dealing with stringified globs correctly.

Also add a test for the truncation of strings in the non-numeric

2 weeks agoThese be the versions on CPAN now, ye scurvy dogs.
Chris 'BinGOs' Williams [Mon, 22 Jun 2015 07:25:07 +0000]
These be the versions on CPAN now, ye scurvy dogs.

2 weeks agoperlvar: fix list of defaulted array operators
Aristotle Pagaltzis [Sun, 21 Jun 2015 19:25:55 +0000]
perlvar: fix list of defaulted array operators

2 weeks agowelcome to v5.23.1, please make regen
Ricardo Signes [Sat, 20 Jun 2015 20:35:57 +0000]
welcome to v5.23.1, please make regen

2 weeks agocorelist: update for v5.23.1
Ricardo Signes [Sat, 20 Jun 2015 20:34:32 +0000]
corelist: update for v5.23.1

2 weeks agopatchlevel: we are now perl v5.23.1
Ricardo Signes [Sat, 20 Jun 2015 20:24:47 +0000]
patchlevel: we are now perl v5.23.1

2 weeks agoperldelta: correct target version v5.23.0
Ricardo Signes [Sat, 20 Jun 2015 20:13:57 +0000]
perldelta: correct target version

2 weeks agoperldelta: remove some unneeded bits
Ricardo Signes [Sat, 20 Jun 2015 19:02:46 +0000]
perldelta: remove some unneeded bits

2 weeks agoperlhist: v5.23.0 will be today
Ricardo Signes [Sat, 20 Jun 2015 18:51:41 +0000]
perlhist: v5.23.0 will be today

2 weeks agoperldelta: update for v5.23.0
Ricardo Signes [Sat, 20 Jun 2015 18:31:04 +0000]
perldelta: update for v5.23.0

2 weeks agoCoreList: update corelist for release of v5.23.0
Ricardo Signes [Sat, 20 Jun 2015 17:45:56 +0000]
CoreList: update corelist for release of v5.23.0

2 weeks agopartially revert 'silence gcc -pendantic warnings'
David Mitchell [Sat, 20 Jun 2015 01:56:03 +0000]
partially revert 'silence gcc -pendantic warnings'

The GCC_DIAG_IGNORE(-Wpedantic) stuff added by me to
STATIC_ASSERT_GLOBAL() by ac892e4a230de5b was causing some smoke failures.

I don't yet understand why.

2 weeks agoperlebcdic: Fix typo
Karl Williamson [Fri, 19 Jun 2015 19:40:33 +0000]
perlebcdic: Fix typo

2 weeks agosilence some gcc -pendantic warnings
David Mitchell [Fri, 19 Jun 2015 13:52:17 +0000]
silence some gcc -pendantic warnings

2 weeks agosilence some -Wc++-compat warnings
David Mitchell [Fri, 19 Jun 2015 12:41:42 +0000]
silence some -Wc++-compat warnings

The initialisers for PL_inf and PL_nan disabled -Wc++-compat warnings for
some ifdef branches but not others. Expand the scope of the
GCC_DIAG_IGNORE() to all cases.

2 weeks agoremove deprecated /\C/ RE character class
David Mitchell [Fri, 19 Jun 2015 11:47:05 +0000]
remove deprecated /\C/ RE character class

This horrible thing broke encapsulation and was as buggy as a very buggy
thing. It's been officially deprecated since 5.20.0 and now it can finally
die die die!!!!

2 weeks ago[MERGE] refactor sub returns (pp_return etc)
David Mitchell [Fri, 19 Jun 2015 08:51:10 +0000]
[MERGE] refactor sub returns (pp_return etc)

This series of commits attempts to reduce duplication and partially unify
the code that handles subroutine exit, in places like pp_leavesub,
pp_return etc.  In particular, pp_return has been heavily modified so that
it is now only responsible for doing any extra work required above and
beyond that done by pp_leavesub et al (popping contexts and removing junk
left on the stack). It now tail calls pp_leavesub / pp_leaveeval/ etc to
do the remaining heavy lifting. This reduces the code size of pp_return to
about a quarter of what it was previously, and ensures that exactly the
same processes happen regardless of whether an explicit return is is done
or not.

It also fixes using return in list context in a MULTICALL, e.g.

    use List::Util qw(pairmap);
    @a = pairmap { for (1,2) { return (3,4)} } qw(a b);

formerly returned (1,2,3,4) and now returns (3,4).

It also simplifies S_sortcv() et al which are responsible for calling
a sort sub.

2 weeks agosinplify Perl_block_gimme()
David Mitchell [Fri, 19 Jun 2015 08:45:54 +0000]
sinplify Perl_block_gimme()

The switch statement was fairly pointless, as it was just a bunch of

    case G_VOID:
       return G_VOID;

so replace the switch with a simple "croak if 0, otherwise return the

2 weeks agopp_return: optimise a couple of conditions
David Mitchell [Thu, 11 Jun 2015 10:11:19 +0000]
pp_return: optimise a couple of conditions


    if (cxix < 0) {
        A; return;
    if (cxix < cxstack_ix)


    if (cxix < cxstack_ix) {
        if (cxix < 0) {
            A; return;

This is functionally the same, since cxstack_ix is always positive at
this point, and makes for a quicker code path (one less test and branch)
in the reasonably common case of a return from a sub which doesn't
have any extra nested contexts to pop.