This is a live mirror of the Perl 5 development currently hosted at
11 years agot/op/sselect.t: add descriptions to ok() tests
David Mitchell [Thu, 9 Jun 2011 15:15:36 +0000 (16:15 +0100)]
t/op/sselect.t: add descriptions to ok() tests

11 years agot/op/alarm.t: reduce intermittent failures
David Mitchell [Thu, 9 Jun 2011 14:51:54 +0000 (15:51 +0100)]
t/op/alarm.t: reduce intermittent failures

Fix a race condition where the alarm is reset *after* the handler
and an eval have been removed.

Also, make the points at which time is measured closer to the things
they need to measure, to reduce timing noise on a heavily-loaded system.

Hopefully these measures will reduce the number of random smoke failures,
although I couldn't reproduce the failures, even on a heavily-loaded

11 years agoUpdates to perldelta for all the updated CPAN modules.
Chris 'BinGOs' Williams [Thu, 9 Jun 2011 11:16:14 +0000 (12:16 +0100)]
Updates to perldelta for all the updated CPAN modules.

11 years agoUpdated JSON-PP to CPAN version 2.27200
Chris 'BinGOs' Williams [Sun, 22 May 2011 07:55:45 +0000 (08:55 +0100)]
Updated JSON-PP to CPAN version 2.27200


  2.27200  Sun May 22 12:17:51 2011
    - fixed incr_parse docodeing string more correctly (rt#68032 by LCONS)

11 years agoUpdated Encode to CPAN version 2.43
Chris 'BinGOs' Williams [Sat, 21 May 2011 23:33:51 +0000 (00:33 +0100)]
Updated Encode to CPAN version 2.43


  $Revision: 2.43 $ $Date: 2011/05/21 23:14:43 $
  ! lib/Encode/
    Addressed RT#68361: Encode::Bytes x-mac-... aliases missing
    Applied the 0001-Fix-typo-in-pod.patch
    Addressed RT#65796 Deep recursion error finding invalid charset
    Applied a jumbo doc patch by Tom Christiansen
    Message-Id: <14795.1304618434@chthon>

11 years agoUpdated Unicode-Collate to CPAN version 0.76
Chris 'BinGOs' Williams [Wed, 18 May 2011 23:41:54 +0000 (00:41 +0100)]
Updated Unicode-Collate to CPAN version 0.76


  0.76  Sun May 15 10:06:59 2011
    - updated CJK/ and CJK/ according to CLDR 1.9.1 using
      type='pinyin' alt='short' and type='stroke' alt='short' respectively.

  0.75  Sat May  7 21:07:38 2011
    - supported ignore_level2 and rewrite.
    - Added iglevel2.t and rewrite.t in t.

  0.74  Mon Mar 21 19:07:38 2011
    - removed sw (Swahili) collation according to CLDR 1.9.
        (removed files: Collate/Locale/ and data/sw.txt)
    - shifted primary weights of letters > Z for some languages.
        (affected locales: da, fi, fo, kl, nb, nn, sv)

11 years agoUpdated Unicode-Normalize to CPAN version 1.12
Chris 'BinGOs' Williams [Wed, 18 May 2011 23:34:57 +0000 (00:34 +0100)]
Updated Unicode-Normalize to CPAN version 1.12


  1.12  Mon May 16 23:36:07 2011
    - removed Normalize/ and Composition Exclusions are coded;
      how to load seems not good, but I'm not sure...

  1.11  Sun May 15 20:31:09 2011
    - As perl 5.14.0 has removed unicore/CompositionExclusions.txt
      in the installation, Normalize/ in this distribution
      is used instead. (see [ #68106])

11 years agoUpdated Sys-Syslog to CPAN version 0.29
Chris 'BinGOs' Williams [Wed, 18 May 2011 23:31:23 +0000 (00:31 +0100)]
Updated Sys-Syslog to CPAN version 0.29


  0.29 -- 2011.04.18 -- Sebastien Aperghis-Tramoni (SAPER) #PerlQA2011
        [BUGFIX] CPAN-RT#55215: Sys::Syslog might call exit which triggers
        DESTROY (Alexander Berger).
        [BUGFIX] CPAN-RT#55151: Allow temporary facility with native mechanism
        (Tim Jenkins).
        [BUGFIX] CPAN-RT#50928: Convert Win32 files to Unix EOLs (Steve Hay).
        [BUGFIX] CPAN-RT#50534: Unwanted space at the end of syslog message
        (Eugene V. Lyubimkin).
        [BUGFIX] CPAN-RT#49877: Options not reset after closelog() (Herbert Brezina).
        [BUGFIX] CPAN-RT#48386: Add Win32::EventLog as a prerequisite (kmx and
        Laurent Dami).
        [FEATURE] CPAN-RT#50534: Added options noeol and nonul.
        [DIST] Set INSTALLDIRS to "site" when installed on Perl 5.11+

  0.28 -- 2011.04.16 -- Sebastien Aperghis-Tramoni (SAPER) #PerlQA2011
        [BUGFIX] CPAN-RT#56084: Reset connection tracking vars (Vladimir Marek).
        [BUGFIX] CPAN-RT#56826: Avoid memory corruption when closelog() is
        called twice (Andreas Jaekel).
        [BUGFIX] CPAN-RT#64287: Make strftime() Windows-compatible (Dave Stafford).
        [FEATURE] New API for setlogsock(), in order to allow the setting
        of new options. Thanks to Jake Scott for the idea.
        [CODE] Modify can_load() so it can print the warnings if desired.
        [CODE] CPAN-RT#44410: Provide fallback macros in Syslog.xs in
        order to compile on Novell Netware.
        [TESTS] In blead, the distribution was moved from ext/Sys/Syslog
        to ext/Sys-Syslog. t/constants.t had to be fixed (Vincent Pit).
        [TESTS] CPAN-RT#53317: In core, Sys-Syslog was moved to cpan/, thus
        making t/constants.t unable to find macros.all (David Mitchell).
        [TESTS] CPAN-RT#64716: Skip t/data-validation.t if the available
        version of POE::Component::Server::Syslog is too old.
        [DIST] Bleadperl no longer require an empty MAN3PODS (Nicholas Clark).
        [DIST] Removed unneeded modules in Makefile.PL (Nicholas Clark).
        [DOC] Recreated Sys::Syslog history from the unified git repository.
        [DOC] Added a section to list the matching Perl and Sys::Syslog version.
        [DOC] CPAN-RT#49859: Removed a dead link (Leon Brocard).

11 years agoUpdated Filter-Util-Call to CPAN version 1.39
Chris 'BinGOs' Williams [Wed, 18 May 2011 20:50:14 +0000 (21:50 +0100)]
Updated Filter-Util-Call to CPAN version 1.39


  1.39 30 April 2011

  * Fix decrypt to work with Perl 5.14
    [RT #67656]

  1.38 24 April 2011

  * Versions being seperate from Module versions results in dependency confusion
    Bumped all versions to match the distribution version number.
    [RT #67655]

  * Fix decrypt to work with Perl 5.14
    [RT #67656]

  * Update the Filter-Simple URL
    [RT #49778]

11 years agoUpdate DB_File to CPAN version 1.822
Chris 'BinGOs' Williams [Wed, 18 May 2011 20:35:23 +0000 (21:35 +0100)]
Update DB_File to CPAN version 1.822


  1.822 12 March 2011

   * Keep DB_File's warnings in sync with perl's
     [ #66339]

11 years agoUpdated CGI to CPAN version 3.54
Chris 'BinGOs' Williams [Wed, 18 May 2011 19:52:36 +0000 (20:52 +0100)]
Updated CGI to CPAN version 3.54


  Version 3.54, Apr 28, 2011
   No code changes

   - Address test failures in t/tmpdir.t, thanks to Niko Tyni.
     Some tests here are failing on some platforms and have been marked as TODO.

  Version 3.53, Apr 25, 2011

  - The DELETE HTTP verb is now supported.
    (RT#52614, James Robson, Eduardo Ari�o de la Rubia)

  - Correct t/tmpdir.t MANIFEST entry. (RT#64949)
  - Update minimum required Perl version to be Perl 5.8.1, which
    has been out since 2003. This allows us to drop some hacks
    and exceptions (Mark Stosberg)

11 years agoUpdated IO-Compress to CPAN version 2.035
Chris 'BinGOs' Williams [Wed, 18 May 2011 19:23:39 +0000 (20:23 +0100)]
Updated IO-Compress to CPAN version 2.035


  2.035 6 May 2011

      * RT #67931: Test failure on Windows

  2.034 2 May 2011

      * Compress::Zlib
        - Silence pod warnings.
          [RT# 64876]

        - Removed duplicate words in pod.

      * IO::Compress::Base

        - RT #56942: Testsuite fails when being run in parallel

        - Reduce symbol import - patch from J. Nick Koston

        - If the output buffer parameter passed to read has a value of
          undef, and Append mode was specified when the file was opened,
          and eof is reached, then the buffer paramer was left as undef.
          This is different from when Append isn't specified - the buffer
          parameter is set to an empty string.

        - There area couple of issues with reading a file that contains an
          empty file that is compressed.
          Create with -- touch /tmp/empty; gzip /tmp/empty.
          Issue 1 - eof is not true immediately. Have to read from the file
                    to trigger eof.
          Issue 2 - readline incorrectly returns an empty string the first
                    time it is called, and (correctly) undef thereafter.
          [RT #67554]

11 years agoUpdated Compress-Raw-Zlib to CPAN version 2.035
Chris 'BinGOs' Williams [Wed, 18 May 2011 19:16:42 +0000 (20:16 +0100)]
Updated Compress-Raw-Zlib to CPAN version 2.035


  2.035 6 May 2011

      * No Changes

11 years agoUpdated Compress-Raw-Bzip2 to CPAN version 2.035
Chris 'BinGOs' Williams [Wed, 18 May 2011 19:12:06 +0000 (20:12 +0100)]
Updated Compress-Raw-Bzip2 to CPAN version 2.035


  2.035 6 May 2011

    * No Changes

11 years agoUpdated XSLoader to CPAN version 0.15
Chris 'BinGOs' Williams [Wed, 18 May 2011 17:53:16 +0000 (18:53 +0100)]
Updated XSLoader to CPAN version 0.15


  0.15 - 2011.04.17 - SAPER #PerlQA2011
    - [DIST] CPAN-RT#54456: Set INSTALLDIRS to "site" when installed on
      Perl 5.11+ (thanks to Todd Rinaldo).
    - [DOC] Document a known bug under Perl 5.8.4 and 5.8.5.
    - [TESTS] Fixed tests to pass under Perl 5.8.4 and 5.8.5.

  0.14 - 2011.04.16 - SAPER #PerlQA2011
    - [CODE] Updated from bleadperl:
       - XSLoader::load() with no arguments can use caller to find
         a default package (Nicholas Clark).
       - Avoid defining a full XSLoader::bootstrap_inherit post 5.6,
         as it's not needed (Nicholas Clark).
       - Small optimisation: for the generated, avoid a
         runtime lexical which is constant (Nicholas Clark).
    - [TESTS] Updated from bleadperl, solving RT-CPAN #54132, #61332.
    - [TESTS] Fixed tests for old Perls.
    - [TESTS] Added t/00-load.t and t/01-api.t, to provide basic tests
      when the main ones are skipped.

11 years agoUpdated Digest-SHA to CPAN version 5.62
Chris 'BinGOs' Williams [Wed, 18 May 2011 17:42:08 +0000 (18:42 +0100)]
Updated Digest-SHA to CPAN version 5.62


  5.62  Sat May 14 04:00:34 MST 2011
        - removed unnecessary loading of MIME::Base64 module
            -- thanks to dolmen for pointing this out

11 years agoUpdate CPAN-Meta to CPAN version 2.110930
Chris 'BinGOs' Williams [Wed, 18 May 2011 11:27:08 +0000 (12:27 +0100)]
Update CPAN-Meta to CPAN version 2.110930


  2.110930  2011-04-02 23:31:24 America/New_York


  - Fixed a bug in the 'as_string' method that checked the module version
    instead of the meta-spec version when conversion was requested
    (RT #67188)

  2.110910  2011-04-01 08:55:30 America/New_York


  - The 1.x spec "gpl" and "lgpl" and "mozilla" license values now up-convert
    to "open_source" because they indicate too non-specific a license.

  2.110580  2011-02-27 07:58:06 EST5EDT


  - Add explicit dependencies on JSON::PP and CPAN::Meta::YAML instead
    of relying on Parse::CPAN::Meta to provide them (as some CPAN Testers
    have had P::C::M installed without them somehow)

  - Removed dependency on Storable as it was not a core module
    until Perl 5.8

  2.110550  2011-02-24 07:17:57 EST5EDT


  - Added required field 'release_status' to the synopsis of
    CPAN::Meta::Spec (RT#66118) [Oliver Mengué]

  2.110540  2011-02-23 15:21:16 EST5EDT


  - Had two different Parse::CPAN::Meta requirements, one in 'requires' and
    the other in 'build_requires'. This confused some installers, so we
    only inlude the 'requires' now.

11 years agoUpdate CPANPLUS to CPAN version 0.9105
Chris 'BinGOs' Williams [Wed, 18 May 2011 10:12:21 +0000 (11:12 +0100)]
Update CPANPLUS to CPAN version 0.9105


  Changes for 0.9105      Thu May  5 21:47:45 2011
  * remove any pointers to the sourceforge mailing list
  * point to the github repo instead
  * Only enable custom sources in the tests where it is actually
    required for testing
  * Added support to parse_module() for 'Module/' parsing

  Changes for 0.9104      Tue Apr 19 15:13:57 2011
  * Force Parse::CPAN::Meta to use a sane default for JSON backend
  * Make sure that test failures aren't reported twice to the terminal

11 years agoUpdate CPANPLUS-Dist-Build to CPAN version 0.56
Chris 'BinGOs' Williams [Wed, 18 May 2011 09:36:36 +0000 (10:36 +0100)]
Update CPANPLUS-Dist-Build to CPAN version 0.56


  0.56 Tue Apr 19 14:51:07 BST 2011
    - Display failing tests only once to terminal.

11 years agoUpdate Archive-Extract to CPAN version 0.52
Chris 'BinGOs' Williams [Tue, 17 May 2011 23:34:56 +0000 (00:34 +0100)]
Update Archive-Extract to CPAN version 0.52


  Changes for 0.52    Thu Apr 28 20:56:27 2011
  * Only use unzip from /usr/local/bin when on
    FreeBSD which will be the Info-ZIP version

  Changes for 0.50    Tue Apr 12 19:17:23 2011
  * Resolve RT #56208 reported by Apocalypse

11 years agoUpdate Object-Accessor to CPAN version 0.42
Chris 'BinGOs' Williams [Tue, 17 May 2011 21:40:34 +0000 (22:40 +0100)]
Update Object-Accessor to CPAN version 0.42


  Changes for 0.42    Fri May 13 12:21:50 BST  2011
  * Missed a test using exists, Ikegami RT #68154

  Changes for 0.40    Thu May 12 20:41:36 BST  2011
  * Apply patch from Ikegami RT #68154, which
    avoids use of deprecated exists on array elements.

11 years agoeintr.t: skip based on capability rather than OS
David Mitchell [Mon, 6 Jun 2011 11:30:01 +0000 (12:30 +0100)]
eintr.t: skip based on capability rather than OS

The t/io/eintr.t tests require read/write system to calls to be
interruptible (to see if anything nasty can be done by the signal

Many platforms aren't interruptible, which means the tests would hang.
We currently work round this by skipping based on a hard-coded list of
OSes (such as win32, VMS etc).

Change this so that we instead do an initial test as to whether they are
interruptible, and if not, skip the whole test file.

11 years agoFix my + attrs + list assignment
Father Chrysostomos [Thu, 9 Jun 2011 06:14:37 +0000 (23:14 -0700)]
Fix my + attrs + list assignment

This script works in 5.6.x:

#!perl -l
sub MODIFY_SCALAR_ATTRIBUTES { return } # need these
sub MODIFY_ARRAY_ATTRIBUTES  {  return } # for it to
sub MODIFY_HASH_ATTRIBUTES   {   return } # compile
my ($x,@y,%z) : Bent = 72; # based on example from’s pod
print $x;
print "ok";

$ pbpaste|perl5.6.2

(pbpaste is a Mac command that outputs the clipboard contents.)

In 5.8.0 to 5.8.8:

$ pbpaste|perl5.8.1


So the assignment never happens. And with warnings:

$ pbpaste|perl5.8.1 -w
Bizarre copy of ARRAY in aassign at - line 5.

In 5.8.9 it gets slightly worse:

$ pbpaste|perl5.8.9
Bizarre copy of ARRAY in aassign at - line 5.

So warnings are not required to trigger the error. If my ($x,@y,%z)
is changed to my($x,$y), there is no error, but the assignment
doesn’t happen.

This was broken in 5.8.0 by this change:

commit 95f0a2f1ffc68ef908768ec5d39e4102afd28c1e
Author: Spider Boardman <>
Date:   Sat Dec 8 19:09:23 2001 -0500

    Re: attributes are broken
    Message-Id: <200112090509.AAA02053@Orb.Nashua.NH.US>

    p4raw-id: //depot/perl@13543

(Is there a ‘hereby’ missing from that subject? :-)

Oddly enough, that was the commit that put the attribute and list
assignment example in’s pod.

This change caused the bizarre assignment error to occur more often in
5.8.9 and 5.10.0, but I don’t think it’s actually relevant (just try-
ng to see how long I can get this commit message):

commit f17e6c41cacfbc6fe88a5ea5e01ba690dfdc7f2e
Author: Rafael Garcia-Suarez <>
Date:   Wed Jul 5 20:00:10 2006 +0000

    Fix a bug on setting OPpASSIGN_COMMON on a AASSIGN op when the left
    side is made out a list declared with our(). In this case OPpLVAL_INTRO
    isn't set on the left op, so we just remove that check. Add new tests.

    p4raw-id: //depot/perl@28488

What’s happening is that there is an extra pushmark in the list when
attributes are present:

$ perl5.14.0 -MO=Concise  -e 'my ($a,@b):foo'
o  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 39 -e:1) v:{ ->3
n     <@> list vKPM/128 ->o
3        <0> pushmark vM/128 ->4
4        <0> padsv[$a:39,40] vM/LVINTRO ->5
5        <0> padav[@b:39,40] vM/LVINTRO ->6
6        <0> pushmark v ->7              <------- right here
e        <1> entersub[t3] vKS*/NOMOD,TARG ->f
7           <0> pushmark s ->8
8           <$> const[PV "attributes"] sM ->9
9           <$> const[PV "main"] sM ->a
b           <1> srefgen sKM/1 ->c
-              <1> ex-list lKRM ->b
a                 <0> padsv[$a:39,40] sRM ->b
c           <$> const[PV "foo"] sM ->d
d           <$> method_named[PV "import"] ->e
m        <1> entersub[t4] vKS*/NOMOD,TARG ->n
f           <0> pushmark s ->g
g           <$> const[PV "attributes"] sM ->h
h           <$> const[PV "main"] sM ->i
j           <1> srefgen sKM/1 ->k
-              <1> ex-list lKRM ->j
i                 <0> padsv[@b:39,40] sRM ->j
k           <$> const[PV "foo"] sM ->l
l           <$> method_named[PV "import"] ->m
-e syntax OK

That leaves an extra mark that confuses pp_aassign, which doesn’t know
what it’s supposed to be reading and what it’s supposed to be assign-
ing to (hence the bizarre copy).

The pushmark is the result of the concatenation of two lists, the sec-
ond one beginning with a pushmark (as listops do by default). The con-
catenation occurs in Perl_my_attrs, at this spot (in the ‘else’):

    if (rops) {
if (maybe_scalar && o->op_type == OP_PADSV) {
    o = scalar(op_append_list(OP_LIST, rops, o));
    o->op_private |= OPpLVAL_INTRO;
    o = op_append_list(OP_LIST, o, rops);

So this commit make that ‘else’ clause check for a pushmark and oblit-
erate it if present, before concatenating the lists.

11 years agoUpdate notes on why we actually want to disable thread stress tests.
Jesse Vincent [Wed, 8 Jun 2011 19:08:27 +0000 (15:08 -0400)]
Update notes on why we actually want to disable thread stress tests.

11 years agoAdd the v5.12.4-RC1 epigraph to Porting/epigraphs.pod
Leon Brocard [Wed, 8 Jun 2011 17:34:29 +0000 (18:34 +0100)]
Add the v5.12.4-RC1 epigraph to Porting/epigraphs.pod

11 years agoMerge branch 'blead' of ssh:// into blead
Leon Brocard [Wed, 8 Jun 2011 14:47:12 +0000 (15:47 +0100)]
Merge branch 'blead' of ssh:// into blead

11 years agoperlfork, perlfunc: Fix English grammatical errors
Karl Williamson [Wed, 8 Jun 2011 14:38:08 +0000 (08:38 -0600)]
perlfork, perlfunc: Fix English grammatical errors

11 years agoAdd 5.12.4-RC1 to perlhist
Leon Brocard [Wed, 8 Jun 2011 14:42:18 +0000 (15:42 +0100)]
Add 5.12.4-RC1 to perlhist

11 years agostop waithires.t randomly failing under high load
David Mitchell [Wed, 8 Jun 2011 13:18:22 +0000 (14:18 +0100)]
stop waithires.t randomly failing under high load

Under conditions of high load (e.g. parallel testing),
some of the tests in threads-shared/t/waithires.t can fail.

My previous attempt at fixing this,
was mostly wrong. In particular, the new sub cond_timedwaitN()
didn't actually do what it advertised, since it didn't increment
the timeout, which was an absolute clock time. Instead, it's main
affect was to mostly guarantee (within a 10 second window) that
a wait succeeded (and thus that the whole test file didn't hang),
although as it happens, after the first fail it was no longer actively
testing a timed wait.

Formalise this, by renaming cond_timedwaitN() to do_cond_timedwait(), and
just doing an untimed cond_wait() if the initial cond_timedwait() times

In addition, the changes to avoid false positives are:

Increase the wait periods from 0.1s and 0.05s to 0.4s, to give a bigger

Add a new lock, $ready, that ensures that the child is fully started and
ready before the parent starts the cond_timedwait(), which reduces the
window of time where the wait might time out.

Make the scope of the lock as small as possible, so that that the parent
cond_timedwait() isn't still trying to re-acquire the lock while the child
prints out 'ok' messages etc.

And most importantly, don't automatically treat a cond_timedwait() timeout
as a failure.  Instead, measure the time the parent spends in
cond_timedwait(), and the time the child spends between locking and
signalling; and if both of these are greater than the timeout, then we
know we timed out because we were loaded, rather than because something
was wrong with cond_timedwait.

11 years agoSynchronise with what is in dist/ currently.
Chris 'BinGOs' Williams [Wed, 8 Jun 2011 12:22:33 +0000 (13:22 +0100)]
Synchronise with what is in dist/ currently.

11 years agoTweak APC instructions.
Craig A. Berry [Sun, 5 Jun 2011 22:01:10 +0000 (17:01 -0500)]
Tweak APC instructions.

The --shared option wasn't necessary and the daemon could not
update without full access to the entire directory tree.

11 years agoDisable some threads tests on m68k for now due to missing TLS.
Jesse Vincent [Wed, 8 Jun 2011 03:50:37 +0000 (23:50 -0400)]
Disable some threads tests on m68k for now due to missing TLS.

A backport from downstream at Debian:

perl (5.14.0-1) debian/m68k_thread_stress.diff

Subject: Disable some threads tests on m68k for now due to missing TLS.
Closes: #495826, #517938

11 years agoperldelta entries for lvalue and COW fixes
Father Chrysostomos [Wed, 8 Jun 2011 03:44:28 +0000 (20:44 -0700)]
perldelta entries for lvalue and COW fixes

11 years agoRegenerate known_pod_issues.dat
Father Chrysostomos [Wed, 8 Jun 2011 03:36:39 +0000 (20:36 -0700)]
Regenerate known_pod_issues.dat

11 years agoUpdate perldelta with entries copied from 5.14.1
Father Chrysostomos [Wed, 8 Jun 2011 03:30:24 +0000 (20:30 -0700)]
Update perldelta with entries copied from 5.14.1

Since I just updated 5.14.1’s perldelta, it made sense to go ahead and
do this.  For a list of the commits that are dealt with here, log into
cherrymaint and look for anything recent marked ‘Cherry-picked’.

I did not bother including the Ubuntu library path and Darwin test
fixes.  I don’t think they are worth mentioning, but others may disa-
gree... (‘may’ in both senses).

11 years agoRemove unnecessary TAINT_NOT
Father Chrysostomos [Wed, 8 Jun 2011 00:56:06 +0000 (17:56 -0700)]
Remove unnecessary TAINT_NOT

(Ignore this for perldelta.)

*++newsp = *MARK obviously does no tainting.  The TAINT_NOT following
it was unnecessarily copied to S_return_lvalues from pp_return when
the former came into existence.  (pp_return does need TAINT_NOT, as it
uses sv_mortalcopy, which calls sv_setsv_flags, which does tainting.)

11 years ago[perl #92290, #92406] Returning a pad var from lv sub
Father Chrysostomos [Wed, 8 Jun 2011 00:05:06 +0000 (17:05 -0700)]
[perl #92290, #92406] Returning a pad var from lv sub

This fixes a recent (post-5.14.0) regression.

Commit bf8fb5e (the fix for #62498) introduced it for lvalue subs with
no return statement [perl #92406].
Commit fa1e92c (the fix for #72724) introduced it for lvalue subs that
do have an explicit return [perl #92290].

Simply returning a scalar itself from an lvalue sub does not work if
it is a pad variable with a reference count of 1.  In that circum-
stance, the sub-popping code sees that the SV can be re-used the next
time the sub is called, so it undefines it and hangs on to it.  So
the scalar returned gets emptied before the calling code can see it.

The reference count has to be increased temporarily, which sv_2mortal
and SvREFCNT_inc combined accomplish.

11 years agoCorrect test names in sub_lval.t
Father Chrysostomos [Tue, 7 Jun 2011 23:09:17 +0000 (16:09 -0700)]
Correct test names in sub_lval.t

11 years agoExpand a little on what to do with Module::CoreList and maint
Leon Brocard [Tue, 7 Jun 2011 20:29:26 +0000 (21:29 +0100)]
Expand a little on what to do with Module::CoreList and maint

11 years agoUpdate Module::CoreList for 5.12.4
Leon Brocard [Tue, 7 Jun 2011 20:28:57 +0000 (21:28 +0100)]
Update Module::CoreList for 5.12.4

11 years agoFix broken link in perlfunc
Father Chrysostomos [Tue, 7 Jun 2011 15:42:58 +0000 (08:42 -0700)]
Fix broken link in perlfunc

11 years agoAdd Bo Johansson to AUTHORS
Father Chrysostomos [Tue, 7 Jun 2011 15:31:11 +0000 (08:31 -0700)]
Add Bo Johansson to AUTHORS

I think the e-mail address is misspelt, but that is what was
provided in the patch

11 years agoAdd information about portability caveats related to using kill on forked process.
bojilund [Tue, 7 Jun 2011 08:24:43 +0000 (10:24 +0200)]
Add information about portability caveats related to using kill on forked process.

The outcome of kill on a pseudo-process in Windows is unpredictable
and it should not be used except under dire circumstances.
The process which implements the pseudo-processes can be blocked
and the Perl interpreter hangs.

11 years agoImprove documentation to support portability
bojilund [Tue, 7 Jun 2011 07:32:31 +0000 (09:32 +0200)]
Improve documentation to support portability

If something has a portability issue, we should mention it in the main
place people will read about the thing with the issue. For Perl
built-ins, that's perlfunc. We don't have to explain the issue, but we
should at the very least tell people where to find an explanation of
the issue.

11 years agoperldelta.pod: added summary of formline changes
David Golden [Tue, 7 Jun 2011 10:35:22 +0000 (06:35 -0400)]
perldelta.pod: added summary of formline changes

Summary paragraph received by email from Dave Mitchell.

11 years agoperldelta: Add potential entries
Karl Williamson [Tue, 7 Jun 2011 03:29:18 +0000 (21:29 -0600)]
perldelta: Add potential entries

I looked through all my commits, and came up with this text for all the
ones I think could possibly be desired to put into the perldelta.  All
other commits I've made for 5.15 so far, can be ignored IMO as far as
the delta is concerned.  I'm not so sure about even the ones I've
done here.  Feel free to omit them.  The wording for the edge case is
convoluted; but it's hard for me to describe the complicated
circumstances when the bug appeared.

11 years agogit-deltatool: added a progress counter
David Golden [Mon, 6 Jun 2011 22:39:39 +0000 (18:39 -0400)]
git-deltatool: added a progress counter

Now shows "Commit N of M" so there is a sense of progress while
reviewing commit history

11 years agopod punctuation nit in vmsish
Pau Amma [Mon, 6 Jun 2011 20:39:19 +0000 (13:39 -0700)]
pod punctuation nit in vmsish

11 years agoTest that IPC::Open{2,3} correctly fault read-only file-handle parameters.
Nicholas Clark [Mon, 6 Jun 2011 11:40:40 +0000 (13:40 +0200)]
Test that IPC::Open{2,3} correctly fault read-only file-handle parameters.

11 years agoTest that IPC::Open{2,3} correctly qualify file handles to their package.
Nicholas Clark [Mon, 6 Jun 2011 11:30:51 +0000 (13:30 +0200)]
Test that IPC::Open{2,3} correctly qualify file handles to their package.

11 years agoIn IPC-Open2.t, use functions other than ok(), to generate better diagnostics.
Nicholas Clark [Mon, 6 Jun 2011 11:12:54 +0000 (13:12 +0200)]
In IPC-Open2.t, use functions other than ok(), to generate better diagnostics.

11 years agoIn IPC-Open3.t, merge two similar tests using a loop.
Nicholas Clark [Mon, 6 Jun 2011 10:42:58 +0000 (12:42 +0200)]
In IPC-Open3.t, merge two similar tests using a loop.

11 years ago[perl #90006] out of memory during thread clone
David Mitchell [Mon, 6 Jun 2011 18:09:31 +0000 (19:09 +0100)]
[perl #90006] out of memory  during thread clone

If you run out of memory during thread cloning, exit() may be called which
will unwind the context stacks, and be very unhappy if there aren't any.
Which there might not be if we haven't allocated any yet during cloning.

We can't just fix this by creating them earlier during the cloning
sequence, because creating them requires calling malloc(), which
may fail and exit...

So just check for this condition during stack unwind.

11 years ago[perl #90006] cloning crashes during Out of Memory
David Mitchell [Mon, 6 Jun 2011 16:15:09 +0000 (17:15 +0100)]
[perl #90006] cloning crashes during Out of Memory

Perl's malloc has a $^M facility to create an emergency memory
allocation during an Out Of Memory crisis. This requires accessing
PL_defstash. In perl_clone_using(), in debugging builds, the Idefstash
field was intially poisoned, and before it had a chance to be properly
initialised, malloc() may have been called.

Fix this by initialising PL_defstash to NULL early on.

11 years agoperl_clone_using: do simple assign/copying first
David Mitchell [Mon, 6 Jun 2011 15:01:12 +0000 (16:01 +0100)]
perl_clone_using: do simple assign/copying first

For all the elements of the interpreter that can be cloned by
a simple initialisation (e.g. assign NULL/0/-1), or by a direct
copy from proto, do these first. This means that anything more complex,
that might for example require a malloc, gets done after as much of the
interpreter structure has already been initialised as possible.

This is the beginnings of a fix for [perl #90006].

This commit should have no change in functionality; it's simply moving a
bunch of assign statements to earlier within perl_clone_using().

11 years ago[perl #88776] Signedness warning in toke.c
David Mitchell [Mon, 6 Jun 2011 13:02:24 +0000 (14:02 +0100)]
[perl #88776] Signedness warning in toke.c

fix a warning introduced by 6d51015587940c2032a6533d886163f69ca028f9

11 years agoperlfunc: fix error in open("-|") description
David Mitchell [Mon, 6 Jun 2011 11:39:08 +0000 (12:39 +0100)]
perlfunc: fix error in open("-|") description

both 'to child' and 'from child' were listed as "|-"

11 years agoclarify eval $string scope in docs
David Mitchell [Mon, 6 Jun 2011 10:19:37 +0000 (11:19 +0100)]
clarify eval $string scope in docs

[perl #88014] demonstrated that the docs for string eval misleadingly
implied that the code wasn't executed within new new block scope,
leading to false expectations that $1 etc would retain their values
outside the eval.

11 years ago[perl #92258] <$fh> hangs on a glob copy
Father Chrysostomos [Mon, 6 Jun 2011 05:37:54 +0000 (22:37 -0700)]
[perl #92258] <$fh> hangs on a glob copy

Opening a file handle to \$glob causes assertion failures
(under debugging) or hangs or other erratic behaviour without
debugging. This might even crash in some cases.

It never really worked properly, but it didn’t start hanging
apparently until 5.12.2 and 5.14.0.

11 years agoRemove two pointless uses of sv_2mortal
Father Chrysostomos [Mon, 6 Jun 2011 03:09:13 +0000 (20:09 -0700)]
Remove two pointless uses of sv_2mortal

boolSV returns an immortal. When sv_2mortal is called on
an immortal, it simply returns. So eliminate the call.

11 years agoAdd Samuel Thibault to AUTHORS
Father Chrysostomos [Sun, 5 Jun 2011 21:01:57 +0000 (14:01 -0700)]
Add Samuel Thibault to AUTHORS

11 years agoMake hints/ append to $ccflags rather than overriding them
Samuel Thibault [Wed, 4 Aug 2010 10:34:05 +0000 (13:34 +0300)]
Make hints/ append to $ccflags rather than overriding them


Don't override possible extra $ccflags values given to Configure
on GNU/Hurd.

11 years agoMake Storable freeze COWs properly
Father Chrysostomos [Sun, 5 Jun 2011 05:00:44 +0000 (22:00 -0700)]
Make Storable freeze COWs properly

It was freezing them as read-only scalars.

11 years agoMake Devel::Peek::fill_mstats work on COWs
Father Chrysostomos [Sun, 5 Jun 2011 02:14:33 +0000 (19:14 -0700)]
Make Devel::Peek::fill_mstats work on COWs

11 years agoGet PerlIO::scalar to write to COWs
Father Chrysostomos [Sun, 5 Jun 2011 02:01:59 +0000 (19:01 -0700)]
Get PerlIO::scalar to write to COWs

11 years agoAdd John Hawkinson to AUTHORS
Father Chrysostomos [Sun, 5 Jun 2011 00:55:22 +0000 (17:55 -0700)]
Add John Hawkinson to AUTHORS

11 years ago[perl #92234] Annoying typos in README.macosx
John Hawkinson [Sun, 5 Jun 2011 00:54:26 +0000 (17:54 -0700)]
[perl #92234] Annoying typos in README.macosx

README.macosx in the HEAD (and back to at least 5.8.9) misspells
-Duseshrplib twice in two different wrong ways. This makes it a bit
annoying to find the right flag use :(

11 years agoRefer to X11 rather than "X windows"
Dominic Hargreaves [Sat, 4 Jun 2011 22:45:45 +0000 (23:45 +0100)]
Refer to X11 rather than "X windows"

11 years agoAdd Dominic Hargreaves to AUTHORS
Father Chrysostomos [Sun, 5 Jun 2011 00:42:38 +0000 (17:42 -0700)]
Add Dominic Hargreaves to AUTHORS

11 years ago[perl #92228] Mention diagnostics pragma in perldiag
Dominic Hargreaves [Sun, 5 Jun 2011 00:41:24 +0000 (17:41 -0700)]
[perl #92228] Mention diagnostics pragma in perldiag

This was originally reported at

11 years agoAdd Nobuhiro Iwamatsu to AUTHORS
Father Chrysostomos [Sun, 5 Jun 2011 00:40:05 +0000 (17:40 -0700)]
Add Nobuhiro Iwamatsu to AUTHORS

11 years agoUpdate lengthen time-out time for t/re/re.t.
Nobuhiro Iwamatsu [Sun, 5 Jun 2011 00:38:58 +0000 (17:38 -0700)]
Update lengthen time-out time for t/re/re.t.

When we carry out this test on SH4, it becomes the time-out.
2 seconds are set in watchdog, but are too short for SH4.
This patch was changed for 10 seconds.

$ time ./perl  t/re/re.t
ok 1 - is_regexp(REGEXP ref)
ok 2 - is_regexp(REGEXP)
ok 3 - is_regexp("")
ok 4 - regexp_pattern[0] (ref)
ok 5 - regexp_pattern[1] (ref)
ok 6 - scalar regexp_pattern (ref)
ok 7 - regexp_pattern[0] (bare REGEXP)
ok 8 - regexp_pattern[1] (bare REGEXP)
ok 9 - scalar regexp_pattern (bare REGEXP)
ok 10 - !regexp_pattern("")
ok 11 - regnames
ok 12 - regnames
ok 13 - regnames in scalar context
ok 14 - regnames
ok 15
ok 16
ok 17
ok 18
ok 19 - Didn't loop

real    0m7.482s
user    0m3.848s
sys     0m0.036s

11 years agoAdd Pau Amma to AUTHORS
Father Chrysostomos [Sat, 4 Jun 2011 21:31:58 +0000 (14:31 -0700)]
Add Pau Amma to AUTHORS

11 years agomove "garbage collection" glossary entry where it belongs
Pau Amma [Sat, 4 Jun 2011 21:31:07 +0000 (14:31 -0700)]
move "garbage collection" glossary entry where it belongs

11 years agoStop localised ties from becoming ro when COW
Father Chrysostomos [Sat, 4 Jun 2011 20:10:41 +0000 (13:10 -0700)]
Stop localised ties from becoming ro when COW

11 years agoAllow restricted hashes containing COWs to be cleared
Father Chrysostomos [Sat, 4 Jun 2011 18:58:14 +0000 (11:58 -0700)]
Allow restricted hashes containing COWs to be cleared

11 years agoAllow COW values to be deleted from restricted hashes
Father Chrysostomos [Sat, 4 Jun 2011 18:54:10 +0000 (11:54 -0700)]
Allow COW values to be deleted from restricted hashes

I wonder how many other things a604c75 broke....

11 years agoAllow lvalue subs to return COWs in reference context
Father Chrysostomos [Sat, 4 Jun 2011 18:38:02 +0000 (11:38 -0700)]
Allow lvalue subs to return COWs in reference context

(That’s ‘reference’ as in ‘pass by reference’. It applies to
foo(lvalue_func()) and for(lvalue_func()).)

Commit f71f472 took care of scalar context.
Commit a0aa607 came and long and took care of list context, but,
unfortunately, missed reference context.

This commit takes care of that.

11 years agoAdd tests for [perl #87908]
Karl Williamson [Sat, 4 Jun 2011 20:41:25 +0000 (14:41 -0600)]
Add tests for [perl #87908]

11 years agoFix several array-returning bugs in lvalue subs
Father Chrysostomos [Sat, 4 Jun 2011 13:44:01 +0000 (06:44 -0700)]
Fix several array-returning bugs in lvalue subs

This finishes fixing bug #23790.

When called in reference context (for(...) or map $_, ...), lvalue
subs returning arrays or hashes would return the AV or HV itself, as
though it were lvalue context.

The result was that $_ would be bound to an AV or HV, which is not
supposed to happen, as it’s a scalar (that’s when you start getting
‘Bizarre copy’ errors).

Commit 91e34d82 fixed this in pp_leavesublv, but the if condition it
added was placed outside the loop, so it only applied when the array
was the first thing returned. It also did not take hashes into account.

By changing the lvalue-context check in pp_padav, pp_padhv and
pp_rv2av (which also serves as pp_rv2hv), I was able to apply a more
general fix, which also fix another bug: Those array and hash ops were
croaking when called in scalar reference context (...->$method).

Because it is no longer part of the sub-leaving code, explicitly
returning an array in reference context works now, too.

This commit also eliminates the code added by 91e34d82, as it’s no
longer necessary.

11 years agoGet f_map.t working on non-threaded perls
Father Chrysostomos [Sat, 4 Jun 2011 12:53:29 +0000 (05:53 -0700)]
Get f_map.t working on non-threaded perls

(broken by 767eda4)

11 years agoTeach B::Concise about OPpMAYBE_LVSUB
Father Chrysostomos [Sat, 4 Jun 2011 05:14:41 +0000 (22:14 -0700)]
Teach B::Concise about OPpMAYBE_LVSUB

11 years agoRemove duplicate test
Father Chrysostomos [Sat, 4 Jun 2011 04:50:35 +0000 (21:50 -0700)]
Remove duplicate test

11 years ago[perl #88138] ' is not equivalent to :: before a null
Father Chrysostomos [Sat, 4 Jun 2011 04:34:45 +0000 (21:34 -0700)]
[perl #88138] ' is not equivalent to :: before a null

' is usually equivalent to :: in a symbol name. At the *end* of a
symbol name (as in $'), it’s not equivalent. (That’s a feature.)
Perl_gv_fetchpvn_flags was checking for the end by saying
if(next character), which returns false for a null. It should be
checking the length, which it was already doing for ::, and which
this commit makes it do.

11 years ago[perl #7946] Lvalue subs do not autovivify
Father Chrysostomos [Sat, 4 Jun 2011 03:06:24 +0000 (20:06 -0700)]
[perl #7946] Lvalue subs do not autovivify

This commit makes autovivification work with lvalue subs. It follows
the same technique used by other autovivifiable ops (aelem, helem,
tc.), except that, due to flag constraints, it uses a single flag and
instead checks the op tree at run time to find out what sort of thing
to vivify.

The flag constraints are that these two flags:

#define OPpENTERSUB_HASTARG 32 /* Called from OP tree. */
#define OPpENTERSUB_NOMOD 64 /* Immune to op_lvalue() for :attrlist. */

conflict with these:

#define OPpDEREF (32|64) /* autovivify: Want ref to something: */
#define OPpDEREF_AV 32 /*   Want ref to AV. */
#define OPpDEREF_HV 64 /*   Want ref to HV. */
#define OPpDEREF_SV (32|64) /*   Want ref to SV. */

Renumbering HASTARG and NOMOD is problematic, as there are places in
op.c that change entersubs into rv2cvs, and the entersub and rv2cv
flags would conflict. Setting the flags correctly when changing the
type is hard and would result in subtle bugs if not done perfectly.

Ops like ${...} don’t actually autovivify; it’s the op inside that
does it. In those cases, the parent op is flagged with OPpDEREFed, and
it skips get-magic, as it has already been called by the inner op.

Since entersub is now marked as being an autovivifying op, ${...} in
lvalue context ends up skipping get-magic if there is a foo() inside.
And this affects even regular subs. So pp_leavesub and pp_return have
to call get-magic; hence the new tests in gmagic.t.

11 years agoFollow-up to d34a6664
Father Chrysostomos [Fri, 3 Jun 2011 21:20:10 +0000 (14:20 -0700)]
Follow-up to d34a6664

As Nicholas Clark wrote in

> $ valgrind ./perl -Ilib
> ==5542== Memcheck, a memory error detector
> I think that the problem is that this code in S_run_user_filter()
>  ENTER_with_name("call_filter_sub");
>  EXTEND(SP, 2);
> is putting an action on the save stack to write to an address within
> the GP of PL_defgv. However, the perl code run about 10 lines later
> frees up the GP of PL_defgv, so the scope stack now has a dangling
> pointer. 12 lines later at scope exit, the scope stack unwinding
> writes to the pointer, and nasal daemons emerge.

This commit precedes the SAVEGENERICSV with a call to save_gp, to make
sure the GP is not freed (and then a call to GvINTRO_off [set by
save_gp], so that subsequent glob assignments are not implicitly

This basically emulates what happens with ‘local *_ = \$some_scalar’,
but without the extra intermediate RV.

11 years agoCorrect entersub/rv2cv priv constants in B::Concise
Father Chrysostomos [Fri, 3 Jun 2011 16:25:21 +0000 (09:25 -0700)]
Correct entersub/rv2cv priv constants in B::Concise

See the commit message of d4ddbae for detail.

11 years agoFix a confusing comment in perly.y
Father Chrysostomos [Fri, 3 Jun 2011 13:41:48 +0000 (06:41 -0700)]
Fix a confusing comment in perly.y

There’s no arrow there.

11 years agoRearrange some private op flag constants
Father Chrysostomos [Fri, 3 Jun 2011 13:26:18 +0000 (06:26 -0700)]
Rearrange some private op flag constants

Some constants in op.h were a bit muddled up and were not grouped
according to which ops used them. And one of the comments was wrong.
The history is a bit involved:

Commit 7a52d87 added this comment, which was correct:

+  /* OP_RV2CV only */
 #define OPpENTERSUB_AMPER 8 /* Used & form to call. */

Commit 9675f7a added this constant:

   /* OP_RV2CV only */
 #define OPpENTERSUB_AMPER 8 /* Used & form to call. */
+#define OPpENTERSUB_NOPAREN 128 /* bare sub call (without parens) */

Commit cd06dff added this one, which is confusing, as it is only used
on entersub:

   /* OP_RV2CV only */
 #define OPpENTERSUB_AMPER 8 /* Used & form to call. */
 #define OPpENTERSUB_NOPAREN 128 /* bare sub call (without parens) */
+#define OPpENTERSUB_INARGS 4 /* Lval used as arg to a sub. */

Commit e26df76 added this, resulting in there being two
OP_RV2CV sections:

+  /* OP_RV2CV only */
+#define OPpMAY_RETURN_CONSTANT 1 /* If a constant sub, return the constant */

To top it all, commit b900987 unfortunately ‘fixed’ a mislead-
ing comment:

-  /* OP_RV2CV only */
+  /* OP_ENTERSUB and OP_RV2CV only */
 #define OPpENTERSUB_AMPER 8 /* Used & form to call. */
 #define OPpENTERSUB_NOPAREN 128 /* bare sub call (without parens) */
 #define OPpENTERSUB_INARGS 4 /* Lval used as arg to a sub. */

11 years agoMove the lvalue code from pp_return into a separate func
Father Chrysostomos [Fri, 3 Jun 2011 04:18:50 +0000 (21:18 -0700)]
Move the lvalue code from pp_return into a separate func
so that upcoming commits can add more conditions without
slowing down the most common cases, and so that it can
eventually be merged with pp_leavesublv.

11 years agoregexp.h: work around -Werror compile failure of XS in linux perf tool
Jim Cromie [Wed, 1 Jun 2011 04:15:11 +0000 (22:15 -0600)]
regexp.h: work around -Werror compile failure of XS in linux perf tool

The linux perf tool has an XS component, but when built using system
perl 5.14.0, its compilation errors out on the switch statement in
regexp.h: get_regex_charset_name(), which lacks a default case.  Add
one, copying the end-of-function return "?".

Preserve the end-of-function return "?", to avoid a hypothetical
compiler bug which misses the default case, and infers a void return
for a function thats declared otherwize.

Signed-off-by: Jim Cromie <>
11 years ago[perl #4362] Test for ‘Can't find terminator’
Father Chrysostomos [Thu, 2 Jun 2011 17:55:49 +0000 (10:55 -0700)]
[perl #4362] Test for ‘Can't find terminator’

11 years agoDeparse $obj->$meth=... [perl #62498]
Father Chrysostomos [Thu, 2 Jun 2011 13:01:57 +0000 (06:01 -0700)]
Deparse $obj->$meth=... [perl #62498]

When an lvalue method-as-variable is compiled, the method
op has a sibling that is an rv2cv:

a     <2> sassign vKS/2 ->b
3        <$> const[IV 1] s ->4
9        <1> entersub[t3] sKRMS*/NO(),TARG ->a
4           <0> pushmark s ->5
-           <1> ex-rv2sv sKM/1 ->6
5              <#> gvsv[*obj] s ->6
7           <1> method sK/1 ->8
-              <1> ex-rv2sv sK/1 ->7
6                 <#> gvsv[*meth] s ->7
8           <1> rv2cv /NO() ->9

Deparse didn’t know about it, and was iterating through the
children of entersub, thinking the last one was the method,
stopping at any item named ‘method_named’. So I modified it
to stop at ‘method’ as well.

11 years agoTweak the test from 183eb698e2ceb8ab to work with PERL_UNICODE set.
Nicholas Clark [Thu, 2 Jun 2011 08:51:14 +0000 (09:51 +0100)]
Tweak the test from 183eb698e2ceb8ab to work with PERL_UNICODE set.

One should always generate the golden B::Concise output with PERL_UNICODE set
so that ${^OPEN} is set, as the test system knows how to take it out, not put
it in.

11 years agoCollapse some repetitive code
Father Chrysostomos [Thu, 2 Jun 2011 01:00:45 +0000 (18:00 -0700)]
Collapse some repetitive code

11 years agoDeparse glob the same way regardless of PERL_EXTERNAL_GLOB
Father Chrysostomos [Thu, 2 Jun 2011 00:50:45 +0000 (17:50 -0700)]
Deparse glob the same way regardless of PERL_EXTERNAL_GLOB

This should fix the recent new failure in the VMS smokes
(since 2f77d7b).

11 years ago[perl #62498] Scalar context breaks lvalue subs
Father Chrysostomos [Wed, 1 Jun 2011 23:37:17 +0000 (16:37 -0700)]
[perl #62498] Scalar context breaks lvalue subs

That RT ticket reported that a $ prototype puts an implicit scalar()
on its argument, and that scalar(lvalue()) causes the function to
return a temporary value. In particular:

  ${\scalar($_)} = 1; # ok
  ${\scalar f()} = 1; # no effect

(where f is an lvalue sub that returns $_).

It turns out that this does not only affect scalar(), but also
|| and &&:

  ${\($_  && undef)} = 3; # ok
  ${\(f() && undef)} = 3; # no effect

Also, that comment in pp_leavesublv about f()->meth() not being lvalue
context is wrong, as

  $o->${\sub { $_[0] = "whatever" }};

assigns to $o, and

  sub UNIVERSAL::undef { undef $_[0] }

allows calls like


to undefine $x, if it contains an object or package name.

Since copying values in rvalue context is wasteful anyway, since the
definition of rvalue context is that the value is going to be copied
(resulting in *two* copies), the easiest solution is not to copy val-
ues in rvalue context.

This ends up applying to what I call ‘reference’ context (semi-lvalue,
or potential lvalue) as well.

This works already with explicit return.

As a bonus, this also fixes bug #78680, for which there are already
to-do tests that were added before the bug was reported. See also:;

11 years ago[perl #91946] add constant folding tests
Jim Cromie [Wed, 1 Jun 2011 21:13:40 +0000 (14:13 -0700)]
[perl #91946] add constant folding tests

test arithmetic folding, conditional folding (both true & false),
and string, lc() & uc() folds, and mixed folds.

Signed-off-by: Jim Cromie <>
11 years agoWarn when list-assigning to TEMP
Father Chrysostomos [Wed, 1 Jun 2011 21:11:37 +0000 (14:11 -0700)]
Warn when list-assigning to TEMP

11 years agoTests for XS lvalue functions
Father Chrysostomos [Wed, 1 Jun 2011 21:07:04 +0000 (14:07 -0700)]
Tests for XS lvalue functions

including the ‘Useless assignment to a temporary’ warning
which is only triggered by these.