This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
9 years agoFix #78266: Memory leak with named regexp captures.
Johannes Plunien [Tue, 13 Dec 2011 07:39:52 +0000 (11:39 +0400)]
Fix #78266: Memory leak with named regexp captures.

9 years agoMake scalar() propagate lvalueness
Father Chrysostomos [Tue, 13 Dec 2011 06:29:39 +0000 (22:29 -0800)]
Make scalar() propagate lvalueness

As mentioned in ticket #24346, scalar() should not change lvalueness.
The fact that it did was a side effect of the implementation and a
bug.  foo(scalar substr(....)) should pass a substr lvalue to foo just
as it would without scalar() or with a $ prototype (which is meant to
be equivalent to scalar()).

This also makes it possible to force scalar context in list assignment
to lvalue subroutines, as in (foo(), scalar bar()) = @list.

9 years agoperldelta for is_utf8_string()
Karl Williamson [Mon, 12 Dec 2011 16:21:40 +0000 (09:21 -0700)]
perldelta for is_utf8_string()

9 years agoSet all version object math ops to noop
John Peacock [Sun, 11 Dec 2011 02:51:02 +0000 (21:51 -0500)]
Set all version object math ops to noop

Explicitly handle all math operations with version objects as noop
instead of letting Perl handle it magically with nomethod.

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agofix make_patchnum.pl branch determination
David Mitchell [Mon, 12 Dec 2011 12:42:46 +0000 (12:42 +0000)]
fix make_patchnum.pl branch determination

A previous commit of mine, 9077509c9b9bc1871867a5fba4351b95c670298d,
tried to handle the case where the output of 'git branch' was

    * (no branch)
      blead

to stop it outputting  a 'Use of uninitialized value' warning.
However, my "fix" broke in the case where multiple branches are listed
with the current not the first:

      blead
    * tmp1
      tmp2

Hopefully this fixes it properly.

9 years agoperldelta for e7d0a3fbd9 (tying PVMG COWs)
Father Chrysostomos [Mon, 12 Dec 2011 04:45:36 +0000 (20:45 -0800)]
perldelta for e7d0a3fbd9 (tying PVMG COWs)

9 years agoperldelta up to 0ea03996e7
Father Chrysostomos [Mon, 12 Dec 2011 04:03:25 +0000 (20:03 -0800)]
perldelta up to 0ea03996e7

9 years agoUpdate Socket to CPAN version 1.96
Chris 'BinGOs' Williams [Sun, 11 Dec 2011 09:42:07 +0000 (09:42 +0000)]
Update Socket to CPAN version 1.96

  [DELTA]

  1.96    CHANGES:
         * Fix Socket.t to use ok() instead of is() where required - RT73039
         * Complete rewrite of module docs; list all the constants and
           functions, updated SYNOPSIS
         * Added convenient Exporter tag :addrinfo for all the gai/gni-related
           symbols
         * Provide static synthesized newSVpvn_flags() replacement for older
           Perls
         * Implement getnameinfo() NIx_NOHOST and NIx_NOSERV extension flags

  1.95    CHANGES:
         * Implement the remaining AI_*, EAI_* and NI_* constants from
           Socket::GetAddrInfo
         * Declare configure-time dependency on ExtUtils::Constants 0.23 for
           when building out of core
         * Initial attempt at dual-life extraction from bleadperl

9 years agoRemove explicit support for pre-7.0 VMS and pre-6.0 DEC C.
Craig A. Berry [Sun, 11 Dec 2011 00:51:49 +0000 (18:51 -0600)]
Remove explicit support for pre-7.0 VMS and pre-6.0 DEC C.

OpenVMS v7.0 was released in 1995.  There have been no reports of
recent releases of Perl building on versions that far back, yet we
still have quite a bit of code that explicitly supports versions
*prior* to v7.0.

There is a similar story for DEC C v6.0.  It was released in 1998,
and has been superceded by numerous subsequent versions.  Yet the
VMS-specific code in the core is littered with workarounds and
hacks that defend against deficiencies in very old compiler
versions.

This code is for all practical purposes no longer maintained or
maintainable, so the best path forward seems to be to remove it.
Anyone able and willing to commit to long-term support of it
could argue for its restoration, assuming Perl 5.14.x is not
adequate.

9 years agoRemove local $_ from Exporter
Father Chrysostomos [Sun, 11 Dec 2011 00:36:03 +0000 (16:36 -0800)]
Remove local $_ from Exporter

This was added in commit 732bb7c2d4f.

The changes in that commit did not necessitate the addition of
local $_.  So the localisation is wasting CPU cycles.  Worse, it
causes bugs in 5.12 and earlier.  (local $_ is always wrong if you
don’t control what is in $_ already, because it could be a read-only
tied variable.)  Actually, it causes bugs in 5.14-15 still, because
it seems that the changes to ‘local $_’ still weren’t sufficient (it
still calls FETCH, but not STORE).  That itself needs fixing, but that
should not obviate the need for this change, as Exporter has been liv-
ing a double life.

9 years agoIncrease $Exporter::VERSION to 5.66
Father Chrysostomos [Sun, 11 Dec 2011 00:20:33 +0000 (16:20 -0800)]
Increase $Exporter::VERSION to 5.66

9 years agoUpdate CPANPLUS to CPAN version 0.9113
Chris 'BinGOs' Williams [Sat, 10 Dec 2011 20:45:47 +0000 (20:45 +0000)]
Update CPANPLUS to CPAN version 0.9113

  [DELTA]

  Changes for 0.9113      Fri Dec  9 16:05:07 2011
  ================================================
  * Add more detail and reason for NA to NA reports

9 years agoperlguts: nits
Karl Williamson [Sat, 10 Dec 2011 19:57:05 +0000 (12:57 -0700)]
perlguts: nits

This fixes a few typos, adds a few clarifications, and fixes too wide
verbatim lines

9 years agodocument run_multiple_progs
Tony Cook [Sat, 26 Nov 2011 03:10:22 +0000 (14:10 +1100)]
document run_multiple_progs

9 years agotest for various fatal messages from op.c
Tony Cook [Mon, 28 Nov 2011 11:57:34 +0000 (22:57 +1100)]
test for various fatal messages from op.c

9 years agorefactor croak.t to be data driven (like warnings.t)
Tony Cook [Sat, 26 Nov 2011 03:10:05 +0000 (14:10 +1100)]
refactor croak.t to be data driven (like warnings.t)

9 years agoIncrease ExtUtils::Packlist::VERSION to 1.45
Father Chrysostomos [Fri, 9 Dec 2011 21:31:18 +0000 (13:31 -0800)]
Increase ExtUtils::Packlist::VERSION to 1.45

9 years agoCorrect POD formatting error: '=back' should be within '=begin =end' block.
jkeenan [Fri, 9 Dec 2011 02:39:09 +0000 (21:39 -0500)]
Correct POD formatting error: '=back' should be within '=begin =end' block.

9 years agoIncrease $I18N::LangTags::VERSION to 0.38
Father Chrysostomos [Fri, 9 Dec 2011 21:27:46 +0000 (13:27 -0800)]
Increase $I18N::LangTags::VERSION to 0.38

9 years agoupdate link to ISO 639-2
Alexandr Ciornii [Sun, 16 Oct 2011 00:25:07 +0000 (03:25 +0300)]
update link to ISO 639-2

9 years agoUpdate UNIVERSAL::VERSION POD to reflect reality.
John Peacock [Fri, 9 Dec 2011 01:55:37 +0000 (20:55 -0500)]
Update UNIVERSAL::VERSION POD to reflect reality.

This should have been done when version objects were originally
added to the core back in 5.10.0.  Mea culpa.

[I bumped UNIVERSAL.pm version and added a perldelta entry. -- DG]

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoSync up tests with upstream version.pm
John Peacock [Wed, 7 Dec 2011 02:00:36 +0000 (21:00 -0500)]
Sync up tests with upstream version.pm

Pull in the contents of t/coretests.pm (more or less) from the CPAN
release of version.pm.

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoUse syntax from perlguts for testing objects
John Peacock [Wed, 7 Dec 2011 01:55:09 +0000 (20:55 -0500)]
Use syntax from perlguts for testing objects

The following paragraph is in perlguts.pod:

   To check if you've got an object derived from a specific class you have
   to write:

       if (sv_isobject(sv) && sv_derived_from(sv, class)) { ... }

which does the right thing with magical things like tied scalars.

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoRevert 9bf41c1d to UNIVERSAL::VERSION
John Peacock [Wed, 7 Dec 2011 01:52:11 +0000 (20:52 -0500)]
Revert 9bf41c1d to UNIVERSAL::VERSION

Return the previous behavior where CLASS->VERSION will return a
stringified version object of the contents of $CLASS::VERSION.

Signed-off-by: David Golden <dagolden@cpan.org>
9 years agoFix segfault on overloaded arithmetic assignment
David Golden [Fri, 9 Dec 2011 19:32:08 +0000 (14:32 -0500)]
Fix segfault on overloaded arithmetic assignment

Consider an arithmetic assignment operation of the form

  $left += $right

A segfault was occuring in the case where $right is an overloaded object
but $left is not; and where $right does not override "+=" but does
provide a 'nomethod' override.  Internally, Perl_amagic_call was
attempting to clone $left as if it were an overloaded object, causing the
segfault.  This commit fixes the segfault by only cloning the left
operand when the left operand is the overloaded one.

9 years agoRemove "support" for using malloc.c outside the perl core distribution.
Nicholas Clark [Thu, 8 Dec 2011 10:43:06 +0000 (11:43 +0100)]
Remove "support" for using malloc.c outside the perl core distribution.

It only ever worked properly in 5.005.

Commit d720c4410d3a0730 from June 1998 is the first known version of malloc.c
that would compile stand alone, without needing a config.h
Commit 5bbd1ef51ee0ebfa from December 1998 will not compile by default,
but will if one provides suitable definitions of simple macros on the command
line.
Commit 427181846486e3aa from September 1999 will not compile with command
line flags alone.

12 years later, no-one has reported problems, so it's safe to remove this.

9 years agoRemove commented-out "support" for perl's malloc with x2p.
Nicholas Clark [Thu, 8 Dec 2011 10:12:25 +0000 (11:12 +0100)]
Remove commented-out "support" for perl's malloc with x2p.

In 1998 commit 30e2e4257067d5f8 stated

    temporarily disable perl malloc for a2p until we clean up
    conflicting malloc() declarations everywhere

and nothing has changed since. 13 years later, no-one has reported problems,
so it's safe to remove it.

9 years agoperl.h can include embed.h in the same location on all operating systems.
Nicholas Clark [Thu, 8 Dec 2011 14:30:02 +0000 (15:30 +0100)]
perl.h can include embed.h in the same location on all operating systems.

Commit 22c35a8c2392967a (October 1988) added a #include "embed.h" later in
perl.h for when building with PERL_OBJECT defined. Commit d18c61170a306915
(November 1988) added an effectively duplicate #include for all WIN32.

Commit 0cb9638729211ea7 (June 1999) corrected the made the earlier #include
in perl.h also conditional on !PERL_OBJECT (in addition to the
!PERL_FOR_X2P added by 22c35a8c2392967a), but it wasn't until commit
d18c61170a306915 (November 1999) that this changed this to !WIN32, and
embed.h was included exactly once by perl.h (as a2p never actually includes
perl.h).

Commit acfe0abcedaf592f (August 2001) removed the PERL_OBJECT code from
perl.h, reducing the duplication somewhat, but commit 96e176bf068724d0
(October 2001) created analogous special case duplication for VMS, and
commit 27da23d53ccce622 (April 2005) for Symbian. Commit eb8433b7af0f2e09
(March 2006) then neatly put the same #ifndef PERL_MAD code after all 4
locations that included embed.h and commit b3f24c00097febc1 (April 2006)
made the same correction in all 4 places.

But, the daft part of all this is that there was no reason why Win32 was
special - every other operating system can build perl with embed.h included
later in perl.h

Hence the earlier 3 locations can be eliminated, and the was-just-Win32
location made unconditional.

Which saves some lines of code. But fewer lines than are in this commit
message.

9 years agoperl.h doesn't need special cases for x2p, as x2p doesn't include it.
Nicholas Clark [Thu, 8 Dec 2011 12:16:43 +0000 (13:16 +0100)]
perl.h doesn't need special cases for x2p, as x2p doesn't include it.

Commit 22c35a8c2392967a in October 1998 added an #if !defined(PERL_FOR_X2P)
guard to prevent perl.h from including embed.h when being used to compile
a2p. However, this was not needed even then, because embed.h only contains
pre-processor directives (mostly #define) related to tokens unused in a2p's
C code, so its continued inclusion would not have any effect. Moreover a2p
never actually included perl.h from its own code - only its copy of malloc.c
would include perl.h, and that only if perl was configured to use its own
malloc. But even x2p's use of malloc.c had been "temporarily disabled" by
commit 30e2e4257067d5f8 1 month earlier, so there was never a need for this.

9 years agoRemove the obsolete code for NO_EMBED from sdbm.h
Nicholas Clark [Fri, 9 Dec 2011 15:43:21 +0000 (16:43 +0100)]
Remove the obsolete code for NO_EMBED from sdbm.h

Support for NO_EMBED was removed by commit 22c35a8c2392967 in 1998.
Minitrue attempted to eliminate all mention of it in 2003 with commit
a0a44e237c19cc2b, but missed this code in sdbm.h

9 years agoUpdate READMEs and Pod with the updated URLs at http://lists.perl.org
Steve Peters [Fri, 9 Dec 2011 14:56:51 +0000 (09:56 -0500)]
Update READMEs and Pod with the updated URLs at lists.perl.org

9 years agoMade "c [line_num]" working again.
Shlomi Fish [Wed, 7 Dec 2011 17:36:39 +0000 (19:36 +0200)]
Made "c [line_num]" working again.

This is a bug-fix to
https://rt.perl.org/rt3//Public/Bug/Display.html?id=104820 .

Both the fix and a regression tests were added.

9 years agoperldelta up to e08f19f5d07
Father Chrysostomos [Fri, 9 Dec 2011 06:32:51 +0000 (22:32 -0800)]
perldelta up to e08f19f5d07

9 years agoTest out-of-bounds warning with lv substr
Father Chrysostomos [Fri, 9 Dec 2011 06:21:51 +0000 (22:21 -0800)]
Test out-of-bounds warning with lv substr

9 years agoperldelta up to a74fb2cdc8f
Father Chrysostomos [Fri, 9 Dec 2011 06:15:31 +0000 (22:15 -0800)]
perldelta up to a74fb2cdc8f

plus some later commits dealing with substr

9 years agoperldelta up to 611272bb8
Father Chrysostomos [Fri, 9 Dec 2011 04:45:21 +0000 (20:45 -0800)]
perldelta up to 611272bb8

9 years agostat() fix for write but not read permission on a directory.
Craig A. Berry [Fri, 9 Dec 2011 02:50:17 +0000 (20:50 -0600)]
stat() fix for write but not read permission on a directory.

9b9f19dadd2 missed one corner case where we do actually need to
stat the directory file and not just the name without the .DIR. If
we have write but not read access to the directory, then
stat('foo.DIR') succeeds but stat('foo') fails.  So if the first
stat failed fileify and try again.

9 years agoperldelta up to 47a0660e68
Father Chrysostomos [Fri, 9 Dec 2011 02:12:09 +0000 (18:12 -0800)]
perldelta up to 47a0660e68

9 years agoperldelta for efcf35c4ce
Father Chrysostomos [Fri, 9 Dec 2011 01:51:36 +0000 (17:51 -0800)]
perldelta for efcf35c4ce

9 years agoperldelta up to c70a25495
Father Chrysostomos [Fri, 9 Dec 2011 01:03:42 +0000 (17:03 -0800)]
perldelta up to c70a25495

9 years agoperldelta up to e38acfd7
Father Chrysostomos [Fri, 9 Dec 2011 00:16:32 +0000 (16:16 -0800)]
perldelta up to e38acfd7

9 years agoRetroactively add newCONSTSUB_flags to 5154delta
Father Chrysostomos [Fri, 9 Dec 2011 00:13:11 +0000 (16:13 -0800)]
Retroactively add newCONSTSUB_flags to 5154delta

9 years ago[perl #97476] Deparse not() following the llafr
Father Chrysostomos [Thu, 8 Dec 2011 22:53:50 +0000 (14:53 -0800)]
[perl #97476] Deparse not() following the llafr

not() follows the looks-like-a-function rule, unlike its high-prece-
dence counterpart.  So deparsing

    not +($foo || die) && $baz

as

    not ($foo || die) && $baz

is incorrect, as the && $baz part is no longer part of the argu-
ment to not().

9 years ago[perl #77172] Deparse &{&} as &{&}, not &&
Father Chrysostomos [Thu, 8 Dec 2011 22:35:27 +0000 (14:35 -0800)]
[perl #77172] Deparse &{&} as &{&}, not &&

&& is always tokenised as the logical-and operator, and never as the
&{&} subroutine.  B::Deparse needs to know about this.

(Oddly enough, ** can be exponentiation or the *{*} glob.)

9 years agoMore tests for deparsing warn()+1, etc.
Father Chrysostomos [Thu, 8 Dec 2011 22:27:15 +0000 (14:27 -0800)]
More tests for deparsing warn()+1, etc.

9 years ago[perl #74740] Deparse -(f()) correctly
Father Chrysostomos [Thu, 8 Dec 2011 21:16:48 +0000 (13:16 -0800)]
[perl #74740] Deparse -(f()) correctly

-(f()) was being deparsed as -f(), which is a filetest operator.

Extra parens are needed for negation if the child op deparses with a
single letter at the beginning.

9 years agoDon’t warn for open local *FH
Father Chrysostomos [Thu, 8 Dec 2011 21:09:39 +0000 (13:09 -0800)]
Don’t warn for open local *FH

There is this ancient ‘Precedence problem’ warning that warns for open
followed by a bareword and then an operator that would have made open
into a unary-precedence operator in Perl 4.  It was not taking into
account that the bareword might be a Perl keyword.  In that case it
shouldn’t be warning.

9 years agoDeparse pipe(local *FH, local *FH) correctly
Father Chrysostomos [Thu, 8 Dec 2011 20:51:19 +0000 (12:51 -0800)]
Deparse pipe(local *FH, local *FH) correctly

This is a follow-up to commit 2462c3cca (bug #63558).

I made it work with the first argument, but forgot the second.

9 years agoDeparse (eof)+1 correctly
Father Chrysostomos [Thu, 8 Dec 2011 20:49:33 +0000 (12:49 -0800)]
Deparse (eof)+1 correctly

If the parentheses are omitted, it means eof(1).

To fix this, we surround the keyword with parentheses (if necessary
according to precedence) if it is an unop, because a final () has a
special meaning for some unops.

For listops, we use surrounding parentheses only if the llafr does
not apply.  Otherwise we use a final ().

9 years ago[perl #63558] Deparse open local(*FH) correctly
Father Chrysostomos [Thu, 8 Dec 2011 17:58:44 +0000 (09:58 -0800)]
[perl #63558] Deparse open local(*FH) correctly

open FH and open local(*FH) compile down to the same structure
(open *FH), but with a flag set on the rv2gv (*{}) op for the
local case.

B::Deparse was special-casing rv2gv for ops with * in their prototype,
but without consideration for the flag.

9 years agoDeparse dump as CORE::dump
Father Chrysostomos [Thu, 8 Dec 2011 17:34:04 +0000 (09:34 -0800)]
Deparse dump as CORE::dump

Since dump() warns without CORE::, and since the two variants are
indistinguishable after compilation, always deparse dump() as
CORE::dump.

9 years agoDeparse filetest ops without llafr
Father Chrysostomos [Thu, 8 Dec 2011 17:30:31 +0000 (09:30 -0800)]
Deparse filetest ops without llafr

Before this commit, (-e $_) + 72 deparsed incorrectly, because it
became -e($_) + 72, equivalent to -e ($_+72).

Concerning the removed comment, it’s more important to produce correct
code than nice-looking code.

9 years agoFix use VERSION test failures under PERL_UNICODE
Father Chrysostomos [Thu, 8 Dec 2011 16:42:31 +0000 (08:42 -0800)]
Fix use VERSION test failures under PERL_UNICODE

use VERSION now checks whether HINT_LOCALIZE_HH is set, which indi-
cates that %^H has been modified.  If it is set, it does ‘no feature’
first, regardless of the version number.

Some tests were checking that feature.pm is not loaded for use 5.8.8.
Now it is sometimes, particularly if PERL_UNICODE has been set, as it
adds keys to %^H.

For now, I’ve tweaked the tests.  It would be nice if version declara-
tions could load and unload features without loading feature.pm, just
as they do with strictures.

9 years agoDeparse CORE::do+{} and CORE::do({}) correctly
Father Chrysostomos [Thu, 8 Dec 2011 14:24:53 +0000 (06:24 -0800)]
Deparse CORE::do+{} and CORE::do({}) correctly

Commit 94bb57f91b missed the CORE:: variant.

9 years agoFix deparsing of "" =~ <any OPf_SPECIAL op>
Father Chrysostomos [Thu, 8 Dec 2011 06:13:50 +0000 (22:13 -0800)]
Fix deparsing of "" =~ <any OPf_SPECIAL op>

This is a regression in 5.14.

$ ./perl -Ilib -MO=Deparse -e '"" =~ do{}'
'' =~ ($_ =~ do {
    ()
});
-e syntax OK

Commit a539498ab05 fixed the deparsing of "foo" =~ (1?/foo/:/bar/),
in which /foo/ is implicitly bound to $_.  Due to constant folding,
the whole condition expression is reduced to "foo" =~ /foo/, but with
/foo/ still bound to $_.  /foo/ is marked OPf_SPECIAL, which allows
us to distinguish the cases.  The fix, which added "$_ =~" explic-
itly, did not check that the op was a match op, so any op on the rhs
with the OPf_SPECIAL flag set could trigger the same special case.

9 years agoDeparse.pm: More functions that do not follow llafr
Father Chrysostomos [Thu, 8 Dec 2011 06:40:28 +0000 (22:40 -0800)]
Deparse.pm: More functions that do not follow llafr

See the previous commit.

Again, whether we apply the llafr to loop exits shouldn’t be about
whether parentheses look nice, but whether the final code parses
correctly.

9 years ago[perl #77096] Deparse return and do without llafr
Father Chrysostomos [Thu, 8 Dec 2011 05:58:27 +0000 (21:58 -0800)]
[perl #77096] Deparse return and do without llafr

‘return’ and ‘do-file’ are exempt from the ‘looks-like-a-function
rule’ (llafr).

B::Deparse was intentionally ignoring that:

While it might produce nice-looking code, the final code compiles dif-
ferently in many cases, so we simply cannot ignore these ops’ disre-
gard for that rule.

9 years agodeparse.t: Add bug number
Father Chrysostomos [Wed, 7 Dec 2011 20:52:05 +0000 (12:52 -0800)]
deparse.t: Add bug number

9 years ago[perl #47361] Deparse do +{} and do({}) correctly
Father Chrysostomos [Wed, 7 Dec 2011 20:41:56 +0000 (12:41 -0800)]
[perl #47361] Deparse do +{} and do({}) correctly

These are both variants of do-file syntax.

9 years agoCorrect a bug in the previous commit (bb35dd48)
Nicholas Clark [Thu, 8 Dec 2011 13:02:39 +0000 (14:02 +0100)]
Correct a bug in the previous commit (bb35dd48)

The test in bisect-runner.pl for when to apply the fix of commit
c955f1177b2e311d was not correct - it would also attempt to apply the patch
to commit c955f1177b2e311d and later, not just to commits before
c955f1177b2e311d.

9 years agobisect-runner.pl now builds 42 more 5.005_5x releases.
Nicholas Clark [Wed, 7 Dec 2011 17:42:00 +0000 (18:42 +0100)]
bisect-runner.pl now builds 42 more 5.005_5x releases.

Commit 455ece5e082708b1, which added the SSNEW() macro, was buggy and needs
a fix from commit 3c8a44569607336e in order to avoid strange seemingly
unrelated SEGVs.

9 years agoTeach bisect-runner.pl how to build a significant PERL_OBJECT commit.
Nicholas Clark [Wed, 7 Dec 2011 15:41:21 +0000 (16:41 +0100)]
Teach bisect-runner.pl how to build a significant PERL_OBJECT commit.

Commit 22c35a8c2392967a is "phase 1 of somewhat major rearrangement of
PERL_OBJECT stuff" but doesn't build due to 2 simple errors. blead in this
broken state was merged to the cfgperl branch, and then these were
immediately corrected there. cfgperl (with the fixes) was merged back to
blead. The resultant rather twisty maze of commits completely confuses git
bisect (and at least me), causing it to the bisect run to confidently return
the wrong answer, an unrelated commit on the cfgperl branch.

9 years agobisect-runner.pl must patch an incorrect use of eaccess() for 5.005_5x
Nicholas Clark [Wed, 7 Dec 2011 13:37:52 +0000 (14:37 +0100)]
bisect-runner.pl must patch an incorrect use of eaccess() for 5.005_5x

Without this, 538 intermedidate revisions of 5.005_5x fail to build on
(at least) Linux.

9 years agoFix ext/B/t/f_map.t failure
Father Chrysostomos [Wed, 7 Dec 2011 20:27:25 +0000 (12:27 -0800)]
Fix ext/B/t/f_map.t failure

Tiny typo on my part.  Strangely, the tests passed for me before, so I
probably made a mistake in trying to switch branches.

9 years agoUpdate ExtUtils-ParseXS to CPAN version 3.07
Chris 'BinGOs' Williams [Wed, 7 Dec 2011 19:52:05 +0000 (19:52 +0000)]
Update ExtUtils-ParseXS to CPAN version 3.07

  [DELTA]

  3.07 - Wed Dec  7 14:10:00 CET 2011
    - Fix inconsistent versioning in 3.06.

  3.06 - Fri Dec  2 08:10:00 CET 2011

    - Fix Cygwin issues [Tony Cook]
      avoid conflicting static / dllexport on legacy perls too
      This probably fixes rt.cpan.org 72313 and 71964.
      (3928a66ad4bd8aee704eda1942b7877c0ff1ab2c in core)

    - Convert ` to ' [James Keenan]
      55bee391aeff3c3b8d22fa4ce5491ee9440028aa and
      6dfee1ec62c64d7afe8ced4650596dd9e7f71a63 in core

    - Avoid some test-time warnings [Zefram]
      97bae9c59cd181b3b54061213ec1fdce0ccb30d4 in core

9 years ago[perl #47359] Deparse method {$object} correctly
Father Chrysostomos [Wed, 7 Dec 2011 16:39:59 +0000 (08:39 -0800)]
[perl #47359] Deparse method {$object} correctly

The block is evaluated in list context, allowing things like
SUPER::glelp{@_} to work, so deparsing it as do{...}->method is wrong,
as it puts the block in scalar context.

9 years agoDeparse: detect hh changes properly
Father Chrysostomos [Wed, 7 Dec 2011 07:29:21 +0000 (23:29 -0800)]
Deparse: detect hh changes properly

The hack to check whether the hint hash has changed doesn’t work.  One
actually has to iterate through the hash.  Since declare_hinthash does
that already, just call it.

The change to declare_hinthash to return an empty list instead of ''
is one of those theoretical speed-ups.  It results in one less state-
ment and two fewer method calls in its caller.

9 years agoAdjust docs to match new ver decl behaviour
Father Chrysostomos [Wed, 7 Dec 2011 07:18:00 +0000 (23:18 -0800)]
Adjust docs to match new ver decl behaviour

9 years agoDeparse funny keys/values in hh properly
Father Chrysostomos [Wed, 7 Dec 2011 07:07:49 +0000 (23:07 -0800)]
Deparse funny keys/values in hh properly

Simply putting '...' or q(...) around a string is not sufficient to
quote it properly, allowing this sort of ‘fun’:

$ perl -l -MO=Deparse -e'BEGIN{$^H{"'\''.'\''"} = "um);\n    exit("}print'
BEGIN { $/ = "\n"; $\ = "\n"; }
sub BEGIN {
    $^H{q['.']} = "um);\n    exit(";
}
BEGIN {
    $^H{''.''} = q(um);
    exit();
}
print $_;
-e syntax OK

And B::Deparse already has a facility for quoting strings, so why
not use it?

9 years agoFix up ext/B/t for strict.pm changes
Father Chrysostomos [Wed, 7 Dec 2011 07:01:24 +0000 (23:01 -0800)]
Fix up ext/B/t for strict.pm changes

9 years agoFix deparsing of undefined hint hash values
Father Chrysostomos [Wed, 7 Dec 2011 06:58:31 +0000 (22:58 -0800)]
Fix deparsing of undefined hint hash values

Undefined values in the hint hash were being deparsed as empty
strings.  Whenever the hint hash changed, all undefined values, even
those unmodified, were being printed.

9 years agouse 5.xxx: Don’t load feature.pm unnecessarily
Father Chrysostomos [Wed, 7 Dec 2011 05:33:18 +0000 (21:33 -0800)]
use 5.xxx: Don’t load feature.pm unnecessarily

And don’t look in the hint hash unless the LOCALIZE_HH hint is set.

9 years agomore tests for partial strictures and ver decls
Father Chrysostomos [Wed, 7 Dec 2011 02:20:19 +0000 (18:20 -0800)]
more tests for partial strictures and ver decls

9 years agoImplement new ‘use 5.xxx' plan
Father Chrysostomos [Wed, 7 Dec 2011 02:12:14 +0000 (18:12 -0800)]
Implement new ‘use 5.xxx' plan

• Version declarations now unload all features before loading the
  specified feature bundle.
• Explicit use/no strict overrides any implicit strict-loading done by
  version declarations, whether before or after use of strict.pm.
• ‘use 5.01’ or earlier disables any implicitly-enabled strictures.

9 years agoDocument :default feature bundle
Father Chrysostomos [Wed, 7 Dec 2011 00:54:18 +0000 (16:54 -0800)]
Document :default feature bundle

9 years agoAdd :default feature bundle
Father Chrysostomos [Tue, 6 Dec 2011 22:50:16 +0000 (14:50 -0800)]
Add :default feature bundle

9 years agobisect-runner.pl should skip the testcase if it fails to build config.sh
Nicholas Clark [Wed, 7 Dec 2011 12:55:03 +0000 (13:55 +0100)]
bisect-runner.pl should skip the testcase if it fails to build config.sh

Previously if given a testcase and a target of config.sh or config.h, it
would always attempt run it, even if the target (config.sh or config.h)
had not been built. Oddly enough, this usually resulted in the test case
failing, with the consequence that the bisect run ended with a spurious
result. Skipping such revisions instead makes the bisect output meaningful.

9 years agoPorting/expand-macro.pl needs to avoid "macro redefined" errors.
Nicholas Clark [Wed, 7 Dec 2011 10:26:29 +0000 (11:26 +0100)]
Porting/expand-macro.pl needs to avoid "macro redefined" errors.

In the C code that Porting/expand-macro.pl generates, it #includes the
header containing the macro, to ensure that the macro definition is seen.
This was skipped for perl.h and EXTERN.h, which it always automatically
includes. However, perl.h includes embed.h and embedvar.h and then undefines
and redefines macros in them. Hence if either header is included (again) the
compiler warns about macro redefinitions. Hence ensure that neither is
included a second time.

9 years agoSync versions in Maintainers.pl for Safe and ExtUtils-ParseXS
Chris 'BinGOs' Williams [Wed, 7 Dec 2011 09:52:42 +0000 (09:52 +0000)]
Sync versions in Maintainers.pl for Safe and ExtUtils-ParseXS

9 years agoIncrease perl5db.pl’s version to 1.35
Father Chrysostomos [Tue, 6 Dec 2011 21:17:56 +0000 (13:17 -0800)]
Increase perl5db.pl’s version to 1.35

9 years agocmpVERSION.pl: Check lib/*.pl, too
Father Chrysostomos [Tue, 6 Dec 2011 21:17:13 +0000 (13:17 -0800)]
cmpVERSION.pl: Check lib/*.pl, too

9 years agoUpgrade to Safe 2.30
Rafael Garcia-Suarez [Tue, 6 Dec 2011 21:02:21 +0000 (22:02 +0100)]
Upgrade to Safe 2.30

[rt.cpan.org #72872] Fix bad interaction with loading
Tie::Hash::NamedCapture on perls >= 5.14.0

9 years agoperlfunc/substr: Don’t mention dev release
Father Chrysostomos [Tue, 6 Dec 2011 17:24:23 +0000 (09:24 -0800)]
perlfunc/substr: Don’t mention dev release

Dev releases are an artefact of the developement process, so mentioning
them is not helpful to the average reader.

9 years agoDocument substr lv with negative offset
Father Chrysostomos [Tue, 6 Dec 2011 17:22:59 +0000 (09:22 -0800)]
Document substr lv with negative offset

9 years agoUpdate eval docs for list context fix
Father Chrysostomos [Tue, 6 Dec 2011 16:44:43 +0000 (08:44 -0800)]
Update eval docs for list context fix

9 years ago[perl #80630] Make eval"" return empty list for syntax errors
Father Chrysostomos [Sat, 19 Nov 2011 19:13:24 +0000 (11:13 -0800)]
[perl #80630] Make eval"" return empty list for syntax errors

Up till now, eval"" in list context was returning a list containing
undef for syntax errors and an empty list for run-time errors.

9 years agoDon’t LEAVE_with_name("evalcomp") for syntax errors
Father Chrysostomos [Tue, 6 Dec 2011 16:34:15 +0000 (08:34 -0800)]
Don’t LEAVE_with_name("evalcomp") for syntax errors

In S_doeval, if yystatus == 0 but there have been parser errors, then
there will be an extra scope on the scope stack inside the evalcomp
scope, causing an assertion failure with LEAVE_with_name("evalcomp").

This can happen with eval(q|""!=!~//|), which is a reduced version of
an eval in SNMP::Trapinfo’s test suite.

Under non-debugging builds, everything would have worked anyway,
as the LEAVE_with_name("evalcomp") would have left the scope
inside evalcomp.

Since POPBLOCK pops away the savestack markers on the scope stack, it
is not actually necessary to do LEAVE_with_name("evalcomp") at all
when there is a syntax error.

10 years ago|| instead of "or" (perl#78708)
Alexandr Ciornii [Tue, 6 Sep 2011 21:30:46 +0000 (00:30 +0300)]
|| instead of "or" (perl#78708)

10 years agoPut optimised substr assignment in void context
Father Chrysostomos [Mon, 5 Dec 2011 20:55:57 +0000 (12:55 -0800)]
Put optimised substr assignment in void context

24fcb59fc optimised substr assignment in void context down to four-arg
substr, causing considerable speed-up, but did not take the extra step
of marking the substr op itself as being in void context, so pp_substr
was still constructing a return value.  This commit speed things up
just a tiny bit more.

10 years agofix some foibles in perlintro.pod
Ricardo Signes [Mon, 5 Dec 2011 03:47:24 +0000 (22:47 -0500)]
fix some foibles in perlintro.pod

1. add a missing "of"
2. add a post-dot space missed in e8b5ae5
3. get the motto "right" as per common usage

10 years agoUpdate IO-Compress to CPAN version 2.045
Chris 'BinGOs' Williams [Sun, 4 Dec 2011 20:55:58 +0000 (20:55 +0000)]
Update IO-Compress to CPAN version 2.045

  [DELTA]

  2.045 3 December 2011

      * Restructured IO::Compress::FAQ.pod

10 years agoUpdate Compress-Raw-Zlib to CPAN version 2.045
Chris 'BinGOs' Williams [Sun, 4 Dec 2011 20:48:57 +0000 (20:48 +0000)]
Update Compress-Raw-Zlib to CPAN version 2.045

  [DELTA]

  2.045 3 December 2011

      * Moved FAQ.pod into Zlib.pm

10 years agoUpdate Compress-Raw-Bzip2 to CPAN version 2.045
Chris 'BinGOs' Williams [Sun, 4 Dec 2011 20:45:37 +0000 (20:45 +0000)]
Update Compress-Raw-Bzip2 to CPAN version 2.045

  [DELTA]

  2.045 3 December 2011

      * Moved FAQ.pod to IO::Compress

10 years agoAdjust substr offsets when using, not when creating, lvalue
Father Chrysostomos [Sun, 4 Dec 2011 18:47:40 +0000 (10:47 -0800)]
Adjust substr offsets when using, not when creating, lvalue

When substr() occurs in potential lvalue context, the offsets are
adjusted to the current string (negative being converted to positive,
lengths reaching beyond the end of the string being shortened, etc.)
as soon as the special lvalue to be returned is created.

When that lvalue is assigned to, the original scalar is stringified
once more.

That implementation results in two bugs:

1) Fetch is called twice in a simple substr() assignment (except in
void context, due to the special optimisation of commit 24fcb59fc).

2) These two calls are not equivalent:

$SIG{__WARN__} = sub { warn "w ",shift};
sub myprint { print @_; $_[0] = 1 }
print substr("", 2);
myprint substr("", 2);

The second one dies.  The first one only warns.  That’s mean.  The
error is also wrong, sometimes, if the original string is going to get
longer before the substr lvalue is actually used.

The behaviour of \substr($str, -1) if $str changes length is com-
pletely undocumented.  Before 5.10, it was documented as being unreli-
able and subject to change.

What this commit does is make the lvalue returned by substr remember
the original arguments and only adjust the offsets when the assign-
ment happens.

This means that the following now prints z, instead of xyz (which is
actually what I would expect):

$str = "a";
$substr = \substr($str,-1);
$str = "xyz";
print $substr;

10 years agoClarify docs for sv_usepvn_flags
Father Chrysostomos [Sat, 3 Dec 2011 19:02:32 +0000 (11:02 -0800)]
Clarify docs for sv_usepvn_flags

Note that the string must be the start of a mallocked block of memory,
and not a pointer to the middle of it.

10 years agoOn AIX, avoid a shell pipepline by making makedef.pl sort case insenitively.
Nicholas Clark [Fri, 25 Nov 2011 17:16:35 +0000 (18:16 +0100)]
On AIX, avoid a shell pipepline by making makedef.pl sort case insenitively.

Previously the Makefile piped the output of makedef.pl to sort. This had the
side effect of ignoring the exit code from makedef.pl, as make could only
see the exit code of the last command in the pipeline. This concealed the
causes of the parallel make failure when makedef.pl was missing a dependency
on Config.pm

10 years agoSimplify S_parse_body() by calling S_usage() and S_minus_v() directly.
Nicholas Clark [Thu, 24 Nov 2011 21:34:43 +0000 (22:34 +0100)]
Simplify S_parse_body() by calling S_usage() and S_minus_v() directly.

Previously the code for "--help" and "--version" set a local variable to a
string corresponding to the single character option ("h" or "v"
respectively), then restarted the option parsing code, which would then call
into Perl_moreswitches(), which would then use a switch statement to
dispatch to the final code.

This is not as clear as it could be.

10 years agoBreak the -v code out from Perl_moreswitches() into S_minus_v().
Nicholas Clark [Thu, 24 Nov 2011 20:40:40 +0000 (21:40 +0100)]
Break the -v code out from Perl_moreswitches() into S_minus_v().

10 years agoRefactor S_usage() to take 0 parameters and exit directly().
Nicholas Clark [Thu, 24 Nov 2011 20:28:27 +0000 (21:28 +0100)]
Refactor S_usage() to take 0 parameters and exit directly().

This simplifies the code, as it's only called from one spot, in
Perl_moreswitches().

10 years agoUpdate IO-Compress to CPAN version 2.044
Chris 'BinGOs' Williams [Sat, 3 Dec 2011 23:59:33 +0000 (23:59 +0000)]
Update IO-Compress to CPAN version 2.044

  [DELTA]

  2.044 2 December 2011

      * Moved FAQ.pod under the lib directory so it can get installed

      * Added bin/zipdetails

      * IO::Compress::Zip
        - In one-shot mode enable Zip64 mode if the input file/buffer
          >= 0xFFFFFFFF bytes.

      * IO::Compress::FAQ
        - Updates