This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
9 years agobase.pm no longer modifies $VERSION
David Golden [Thu, 22 Sep 2011 15:09:33 +0000 (11:09 -0400)]
base.pm no longer modifies $VERSION

Previously, base.pm modified the $VERSION of modules it loaded to
the string "-1, set by base.pm".  This is not a valid lax version
string and thus could not be parsed by version.pm. (It is also an
encapsulation violation, as it modifies a global in another package.)

This patch removes the $VERSION modification code entirely and uses
a private hash to track which modules base.pm has successfully loaded.
This also eliminates a subtle bug in how base.pm was checking for
the existence of a package's VERSION scalar.

[Though the final mechanism is different, thank you to John Peacock for
proposing the initial patch to eliminate the "-1..." code from base.pm]

9 years agofold_grind.t: Ignore blank lines
Karl Williamson [Wed, 21 Sep 2011 16:15:02 +0000 (10:15 -0600)]
fold_grind.t: Ignore blank lines

This is in preparation for Unicode 6.1, which has blank lines in the
.txt file that fold_grind reads.  The line that strips off comments did
not work on plain null lines.

9 years agoUCD.pm: accommodate non-standard mktables output
Karl Williamson [Wed, 21 Sep 2011 16:07:38 +0000 (10:07 -0600)]
UCD.pm: accommodate non-standard mktables output

Generally mktables generates the most compact tables possible.  But this
should not be relied on, and when called with the -anotate option,
the mktables tables will not be compact.  This will compact
non-compacted tables when reading them.

9 years agoUCD.pm: Only calculate hex once
Karl Williamson [Wed, 21 Sep 2011 16:06:21 +0000 (10:06 -0600)]
UCD.pm: Only calculate hex once

This uses intermediate variables to store the output of hex(), with the
result that if there is an $end, its hex only is calculated once.

9 years agoadding in the list archive URL for the announcement
Stevan Little [Wed, 21 Sep 2011 14:23:10 +0000 (10:23 -0400)]
adding in the list archive URL for the announcement

10 years agoAdd an option to checkcfgvar.pl to add defaults for missing variables.
Nicholas Clark [Fri, 16 Sep 2011 17:32:03 +0000 (19:32 +0200)]
Add an option to checkcfgvar.pl to add defaults for missing variables.

This eases the updates of the config.sh-format files when a new Configure
variable is added.

10 years agoAdd a --regen option to checkcfgvar.pl to regenerate config files.
Nicholas Clark [Fri, 16 Sep 2011 17:01:33 +0000 (19:01 +0200)]
Add a --regen option to checkcfgvar.pl to regenerate config files.

Verify that the section of config file containing probed files is sorted
lexically. If --regen is used, updated the file on disk with a correctly
sorted version. (Except for configure.com, which has a different structure
not amenable to automatic analysis and update, hence still has to be
updated manually.)

Ensure all config files are correctly sorted.

10 years agoAdd empty Author and zip entries to symbian/config.sh and uconfig{,64}.sh
Nicholas Clark [Fri, 16 Sep 2011 13:03:40 +0000 (15:03 +0200)]
Add empty Author and zip entries to symbian/config.sh and uconfig{,64}.sh

This brackets the probed values sections consistently across all config.sh
type files, between Author and zip inclusive.

Move PERL_CONFIG_SH to the end of NetWare/config.wc and symbian/config.sh,
and PERL_CONFIG_SH CONFIGDOTSH to the end of win32/config.ce, to be
consistent with the other config.sh files.

10 years agoSort epoc/config.sh
Nicholas Clark [Fri, 16 Sep 2011 12:09:07 +0000 (14:09 +0200)]
Sort epoc/config.sh

This brings it back to the regular order: header information, probed values,
information about arguments to Configure, and values propagated from a
previous run.

10 years agoDe-duplicate epoc/config.sh
Nicholas Clark [Fri, 16 Sep 2011 11:33:07 +0000 (13:33 +0200)]
De-duplicate epoc/config.sh

"Don't Repeat Yourself" :-)

10 years agoEliminate duplicate contradictory values from epoc/config.sh.
Nicholas Clark [Fri, 16 Sep 2011 10:59:51 +0000 (12:59 +0200)]
Eliminate duplicate contradictory values from epoc/config.sh.

The two values for quadtype have been present since epoc/config.sh was added
in 3a2f06e93704a418. quadtype is signed, (uquadtype is its unsigned
equivalent) hence remove the definition that uses unsigned long long.
The duplicate contradictory values for d_vendorarch were merged in by
b250498faaf6fbd0 (along with a lot of the non-contradictory duplication),
originating from commit eb0d51032951025d on the cfgperl branch.
The contradictory values for socksizetype arrived with the same commits.

10 years agoChange checkcfgvar.pl to permit trailing comments on config lines.
Nicholas Clark [Fri, 16 Sep 2011 14:09:33 +0000 (16:09 +0200)]
Change checkcfgvar.pl to permit trailing comments on config lines.

Convert the comment for _a in config.ce to a trailing comment.

10 years agoTighten the checking regex in checkcfgvar.pl.
Nicholas Clark [Fri, 16 Sep 2011 13:36:07 +0000 (15:36 +0200)]
Tighten the checking regex in checkcfgvar.pl.

Fix the dubious line in symbian/config.sh which this exposes.

10 years agoIn checkcfgvar.pl, split the configure.com code out.
Nicholas Clark [Fri, 16 Sep 2011 10:19:15 +0000 (12:19 +0200)]
In checkcfgvar.pl, split the configure.com code out.

The configure.com handling is actually sufficiently different that it's
simpler to do it in its own loop. The two regexs for config.sh-style parsing
can be merged. Use non-capturing parens for the parts of regexs that don't
need to be captured.

10 years ago[perl #99660] Remove elems from hashes before freeing them
Father Chrysostomos [Wed, 21 Sep 2011 07:59:02 +0000 (00:59 -0700)]
[perl #99660] Remove elems from hashes before freeing them

Commit f50383f58 made the ‘HeVAL(entry) = &PL_sv_placeholder;’ in the
hash-element-deletion code unconditional.  In doing so, it put it
after the if/else statement containing the SvREFCNT_dec.  So the freed
SV was visible in the hash to destructors called by SvREFCNT_dec.

10 years ago[perl #93590] $tainted ~~ [...] failing
Father Chrysostomos [Tue, 20 Sep 2011 15:55:09 +0000 (08:55 -0700)]
[perl #93590] $tainted ~~ [...] failing

When smartmatch is about to start, to avoid calling get-magic (e.g.,
FETCH methods) more than once, it copies any argument that has
get-magic.

Tainting uses get-magic to taint the expression.  Calling mg_get(sv)
on a tainted scalar causes PL_tainted to be set, causing any scalars
modified by sv_setsv_flags to be tainted.  That means that tainting
magic gets copied from one scalar to another.

So when smartmatch tries to copy the variable to avoid repeated calls
to magic, it still copies taint magic to the new variable.

For $scalar ~~ @array (or ~~ [...]), S_do_smartmatch calls itself
recursively for each element of @array, with $scalar (on the suppos-
edly non-magical copy of $scalar) on the left and the element on
the right.

In that recursive call, it again does the get-magic check and copies
the argument.  Since the copied of a tainted variable on the LHS is
magical, it gets copied again.  Since the first copy is a mortal
(marked TEMP) with a refcount of one, the second copy steal its
string buffer.

The outer call to S_do_smartmatch then proceeds with the second ele-
ment of @array, without realising that its copy of $scalar has lost
its string buffer and is now undefined.

So these produce incorrect results under -T (where $^X is ‘perl’):

    $^X =~ ["whatever", undef]  # matches
    $^X =~ ["whatever", "perl"] # fails

This problem did not start occurring until this commit:

commit 8985fe98dcc5c0af2fadeac15dfbc13f553ee7fc
Author: David Mitchell <davem@iabyn.com>
Date:   Thu Dec 30 10:32:44 2010 +0000

    Better handling of magic methods freeing the SV

mg_get used to increase the refcount unconditionally, pushing it on to
the mortals stack.  So the magical copy would have had a refcount of
2, preventing its string buffer from being stolen.  Now it has a ref-
erence count of 1.

This commit solves it by adding a new parameter to S_do_smartmatch
telling it that the variable has already been copied and does not even
need to be checked.  The $scalar~~@array case sets that parameter for
the recursive calls.  That avoids the whole string-stealing problem
*and* avoids extra unnecessary SVs.

10 years agoFix inability of lex_read_unichar to handle 80-FF under "no utf8;". lex_peek_unichar...
Eric Brine [Tue, 20 Sep 2011 00:16:41 +0000 (20:16 -0400)]
Fix inability of lex_read_unichar to handle 80-FF under "no utf8;". lex_peek_unichar is already correct.

10 years agoupdate TOC for perl5153delta
Stevan Little [Wed, 21 Sep 2011 03:54:55 +0000 (23:54 -0400)]
update TOC for perl5153delta

10 years agomoving old perldelta and creating new one
Stevan Little [Wed, 21 Sep 2011 03:41:54 +0000 (23:41 -0400)]
moving old perldelta and creating new one

10 years agoAdding in my choice of epigraph to epigraph.pod
Stevan Little [Wed, 21 Sep 2011 03:31:15 +0000 (23:31 -0400)]
Adding in my choice of epigraph to epigraph.pod

10 years agoNo need to go into this much detail in the pod (also podcheck doesn't like it) v5.15.3
Stevan Little [Wed, 21 Sep 2011 00:42:50 +0000 (20:42 -0400)]
No need to go into this much detail in the pod (also podcheck doesn't like it)

10 years agoTweak wording of the Notice based on Jesse's feedback
Stevan Little [Tue, 20 Sep 2011 22:12:39 +0000 (18:12 -0400)]
Tweak wording of the Notice based on Jesse's feedback

10 years agoAdding some Known Problems to perldelta
Stevan Little [Tue, 20 Sep 2011 21:46:40 +0000 (17:46 -0400)]
Adding some Known Problems to perldelta

10 years agoremoving the comment from the perldelta (and the previous perldelta as well)
Stevan Little [Tue, 20 Sep 2011 17:48:26 +0000 (13:48 -0400)]
removing the comment from the perldelta (and the previous perldelta as well)

10 years agofinalize perldelta
Stevan Little [Tue, 20 Sep 2011 16:53:49 +0000 (12:53 -0400)]
finalize perldelta

10 years agoadding new release to perlhist
Stevan Little [Tue, 20 Sep 2011 16:51:29 +0000 (12:51 -0400)]
adding new release to perlhist

10 years agofixing the path to pod2html in the release managers guide
Stevan Little [Tue, 20 Sep 2011 16:43:46 +0000 (12:43 -0400)]
fixing the path to pod2html in the release managers guide

10 years agoAdding the acknowledgements section to perldelta
Stevan Little [Tue, 20 Sep 2011 16:31:10 +0000 (12:31 -0400)]
Adding the acknowledgements section to perldelta

10 years agoUpdate Module::CoreList for 5.15.3
Stevan Little [Tue, 20 Sep 2011 01:24:56 +0000 (21:24 -0400)]
Update Module::CoreList for 5.15.3

10 years agoThe link to Devel::PPPort was not understood by porting/podcheck.t so we had to teach it
Stevan Little [Tue, 20 Sep 2011 00:54:33 +0000 (20:54 -0400)]
The link to Devel::PPPort was not understood by porting/podcheck.t so we had to teach it

10 years agoperldelta pod tweaks,.. this is not a link
Stevan Little [Tue, 20 Sep 2011 00:53:40 +0000 (20:53 -0400)]
perldelta pod tweaks,.. this is not a link

10 years agomanually updating INSTALL version "Upgrading from 5.X.Y or earlier" as specified...
Stevan Little [Tue, 20 Sep 2011 00:35:32 +0000 (20:35 -0400)]
manually updating INSTALL version "Upgrading from 5.X.Y or earlier" as specified in the RMG

10 years agobump version to 5.15.3 using Porting/bump-perl-version
Stevan Little [Mon, 19 Sep 2011 21:14:52 +0000 (17:14 -0400)]
bump version to 5.15.3 using Porting/bump-perl-version

10 years agoMore pod formatting tweaks
Stevan Little [Mon, 19 Sep 2011 21:26:34 +0000 (17:26 -0400)]
More pod formatting tweaks

10 years agoFix some pod errors reported by podchecker
Stevan Little [Mon, 19 Sep 2011 21:06:01 +0000 (17:06 -0400)]
Fix some pod errors reported by podchecker

10 years agoUpdating perldelta in preparation for the 5.13.3 release.
Stevan Little [Mon, 19 Sep 2011 20:45:12 +0000 (16:45 -0400)]
Updating perldelta in preparation for the 5.13.3 release.

10 years agoFixing the version in the comment in perl5152delta.pod
Stevan Little [Mon, 19 Sep 2011 19:51:02 +0000 (15:51 -0400)]
Fixing the version in the comment in perl5152delta.pod

10 years agoSkip 2 tests in t/op/filetest.t if t/TEST is a symlink.
Nicholas Clark [Tue, 20 Sep 2011 13:11:46 +0000 (15:11 +0200)]
Skip 2 tests in t/op/filetest.t if t/TEST is a symlink.

t/TEST is usually a regular file, but not always. For example, if one is
building using a symlink forest (eg ./Configure -Dmksymlinks) then it will
be a symlink.

10 years agoUpdate CPAN-Meta to CPAN version 2.112621
Stevan Little [Mon, 19 Sep 2011 16:57:51 +0000 (12:57 -0400)]
Update CPAN-Meta to CPAN version 2.112621

  [DELTA]

  2.112621  2011-09-19 12:15:16 America/New_York

    [BUGFIX]

    - Spell BACKEND environment variables correctly this time
      [noticed by Stevan Little]

  2.112620  2011-09-18 20:56:06 America/New_York

    [BUGFIX]

    - Protect tests against PERL_(YAML|JSON)_BACKEND settings that could
      cause tests to fail. (RT #69979)

10 years agoAdding myself to the AUTHORS list
Stevan Little [Mon, 19 Sep 2011 16:30:42 +0000 (12:30 -0400)]
Adding myself to the AUTHORS list

10 years agoregen generated files
Dave Rolsky [Fri, 16 Sep 2011 04:00:45 +0000 (23:00 -0500)]
regen generated files

10 years agoInclude stub files in pod.lst
Dave Rolsky [Fri, 16 Sep 2011 04:00:32 +0000 (23:00 -0500)]
Include stub files in pod.lst

10 years agoExplicitly ignore the stub pod files I just added when doing the sanity check
Dave Rolsky [Fri, 16 Sep 2011 04:00:09 +0000 (23:00 -0500)]
Explicitly ignore the stub pod files I just added when doing the sanity check

10 years agoadd stub files for deleted OO-related pod files
Dave Rolsky [Fri, 16 Sep 2011 03:39:32 +0000 (22:39 -0500)]
add stub files for deleted OO-related pod files

10 years agoFor RC releases there's no indexer report
Florian Ragwitz [Mon, 19 Sep 2011 12:10:31 +0000 (14:10 +0200)]
For RC releases there's no indexer report

10 years agouse :raw to avoid interference from PERL_UNICODE when creating test data
Tony Cook [Mon, 19 Sep 2011 05:23:44 +0000 (15:23 +1000)]
use :raw to avoid interference from PERL_UNICODE when creating test data

986a805c added dist/IO/t/io_utf8argv.t which creates a utf-8 test file
from raw bytes.  When PERL_UNICODE was set the bytes were encoded as
utf-8, so producing a double-encode file.

Create the file with :raw to avoid that.

10 years agoclear $ENV{PERL_UNICODE} before runperl()ing a test of use open.
Tony Cook [Mon, 19 Sep 2011 05:20:04 +0000 (15:20 +1000)]
clear $ENV{PERL_UNICODE} before runperl()ing a test of use open.

If PERL_UNICODE was set to a value that modified stream behaviour, the
test added in 73f1eaca would fail, because the implied -C option would
cause the behaviour the test was checking wouldn't happen.

10 years agoFix the version of CoreList that'll ship with 5.14.2
Florian Ragwitz [Mon, 19 Sep 2011 05:13:42 +0000 (07:13 +0200)]
Fix the version of CoreList that'll ship with 5.14.2

10 years agoUpdate Module::CoreList for 5.14.2
Florian Ragwitz [Mon, 19 Sep 2011 04:34:54 +0000 (06:34 +0200)]
Update Module::CoreList for 5.14.2

10 years agoRe-generate known_pod_issues.dat
Florian Ragwitz [Mon, 19 Sep 2011 04:45:11 +0000 (06:45 +0200)]
Re-generate known_pod_issues.dat

10 years agoCorrect perldelta entry for -l \*foo change
Father Chrysostomos [Mon, 19 Sep 2011 00:08:28 +0000 (17:08 -0700)]
Correct perldelta entry for -l \*foo change

10 years agoUpdate CPAN-Meta to CPAN version 2.112600
Chris 'BinGOs' Williams [Sun, 18 Sep 2011 21:01:08 +0000 (22:01 +0100)]
Update CPAN-Meta to CPAN version 2.112600

  [DELTA]

  2.112600  2011-09-17 12:21:09 America/New_York

    [DOCUMENTATION]

    - Fixed spelling error in CPAN::Meta::Spec (RT #71036) [Gregor Hermann]

10 years ago[perl #95034] Make perldoc <url> use a reasonabe name
Father Chrysostomos [Sun, 18 Sep 2011 21:17:50 +0000 (14:17 -0700)]
[perl #95034] Make perldoc <url> use a reasonabe name

This patch makes perldoc with a URL use a somewhat reasonable name
based on the basename of the URL, instead of displaying PALLEGCSYO or
BJ1KKH1675 in the pod header (based on the tmp file name).

It treats all URLs the same (changing perldoc.pod to PERLDOC), instead
of treating .pm’s specially.  Maybe this could be improved later.

10 years agoDBFile -> DB_File
Father Chrysostomos [Sun, 18 Sep 2011 19:48:05 +0000 (12:48 -0700)]
DBFile -> DB_File

10 years agoUpdate skip count in t/op/filetest.t after 433644eed.
Craig A. Berry [Sun, 18 Sep 2011 19:33:51 +0000 (14:33 -0500)]
Update skip count in t/op/filetest.t after 433644eed.

10 years agoNoted recent changes to Module::CoreList and added http://perlpunks.de/corelist
Chris 'BinGOs' Williams [Sun, 18 Sep 2011 19:37:22 +0000 (20:37 +0100)]
Noted recent changes to Module::CoreList and added perlpunks.de/corelist

10 years agopodcheck: Clean up known issues
Karl Williamson [Sun, 18 Sep 2011 19:13:21 +0000 (13:13 -0600)]
podcheck: Clean up known issues

When a link to a module is unknown, it is better to use the --add_link
option to podcheck.t and not the --regen option

10 years agoIncrease $VERSIONs for Text::Abbrev and Search::Dict
Father Chrysostomos [Sun, 18 Sep 2011 13:13:34 +0000 (06:13 -0700)]
Increase $VERSIONs for Text::Abbrev and Search::Dict

10 years agofix NAME section in Text::Abbrev and Search::Dict
Robin Barker [Sat, 10 Sep 2011 08:05:13 +0000 (09:05 +0100)]
fix NAME section in Text::Abbrev and Search::Dict

These modules currently warn when parsing ABSTRACT_FROM,
as the NAME section does not have the correct form; so
add "$package - " at the start of the NAME section line.

10 years agoOnly upgrade when necessary
Leon Timmermans [Sun, 18 Sep 2011 10:22:30 +0000 (12:22 +0200)]
Only upgrade when necessary

10 years agoDeparse "${#}a"
Father Chrysostomos [Sun, 18 Sep 2011 05:42:58 +0000 (22:42 -0700)]
Deparse "${#}a"

10 years agoDeparse $#{/} correctly
Father Chrysostomos [Sun, 18 Sep 2011 05:39:17 +0000 (22:39 -0700)]
Deparse $#{/} correctly

10 years agoMake -l always treat non-bareword arguments as file names
Father Chrysostomos [Sun, 18 Sep 2011 03:47:26 +0000 (20:47 -0700)]
Make -l always treat non-bareword arguments as file names

Here is some suspicious code in Perl_my_lstat_flags:

     if (SvROK(sv) && isGV_with_GP(SvRV(sv)) && ckWARN(WARN_IO)) {
  Perl_warner(aTHX_ packWARN(WARN_IO), "Use of -l on filehandle %s",
  GvENAME((const GV *)SvRV(sv)));
  return (PL_laststatval = -1);
     }

The behaviour differs depending on whether warnings are enabled.

That -1 turns into undef in pp_ftlink.  So we get an undef return
value with warnings on, but a file test on a file name otherwise.

In 5.6.2, -l $foo always treated $foo as a file name.

In 5.8+, if it is a reference (ignoring magic) and the reference
points to a typeglob (ignoring magic) and io warnings are on, it warns
and returns undef.

So the only time that undef return is reached is when a warning has
been emitted, so it’s code that will likely be corrected before it
goes into production.  Hence I think it unlikely that anyone could be
relying on the behaviour of -l \*foo (under warnings).

So this commit restores the 5.6 behaviour for that case.

10 years agoMake stacked -l work
Father Chrysostomos [Sun, 18 Sep 2011 03:16:36 +0000 (20:16 -0700)]
Make stacked -l work

Perl 5.10.0 introduced stacked filetest operators,

   -x -r $foo

being equivalent to

    -r $foo && -x _

That does not work with -l.  It was these suspicious lines in
Perl_my_lstat_flags that drew my attention to it:

>     else if (PL_laststype != OP_LSTAT
>      && (PL_op->op_private & OPpFT_STACKED) && ckWARN(WARN_IO))
>  Perl_croak(aTHX_ no_prev_lstat);

That croak only happens when warnings are on.  Warnings are just
supposed to be warnings, unless the ‘user’ explicitly requests
fatal warnings.

$ perl -le 'print "foo", -l -e "miniperl"'
foo
$ perl -lwe 'print "foo", -l -e "miniperl"'
The stat preceding -l _ wasn't an lstat at -e line 1.

That it doesn’t die in the first example is a bug.

In fact, it’s using the return value of -e as a file name:

$ ln -s miniperl 1
$ ./miniperl -le 'print -l -e "miniperl"'
1

And, with warnings on, if the preceding stat *was* an lstat, it
falls back to the pre-stacked behaviour, just as it does when warn-
ings are off.

It’s meant to be equivalent to -e "miniperl" && -l _ (which is why the
error message above says ‘The stat preceding -l _’).

10 years agoperlglossary: fix broken link
Father Chrysostomos [Sun, 18 Sep 2011 02:39:07 +0000 (19:39 -0700)]
perlglossary: fix broken link

10 years agoperlglossary: Make empty-list-as-scalar even clearer
Father Chrysostomos [Sun, 18 Sep 2011 02:32:22 +0000 (19:32 -0700)]
perlglossary: Make empty-list-as-scalar even clearer

10 years agoDocument empty-list-as-scalar in perlglossary
Chas. Owens [Sun, 18 Sep 2011 02:31:09 +0000 (19:31 -0700)]
Document empty-list-as-scalar in perlglossary

10 years agoReally allow podcheck.t to be run from outside t/
Father Chrysostomos [Sun, 18 Sep 2011 02:35:41 +0000 (19:35 -0700)]
Really allow podcheck.t to be run from outside t/

4e9a627e2 was not enough.

10 years agoperldata: Mention undefined as a false val
Father Chrysostomos [Sun, 18 Sep 2011 02:25:26 +0000 (19:25 -0700)]
perldata: Mention undefined as a false val

10 years agoAllow podcheck.t to be run from outside t/ for convenience
Father Chrysostomos [Sun, 18 Sep 2011 02:12:38 +0000 (19:12 -0700)]
Allow podcheck.t to be run from outside t/ for convenience

10 years agoUpdate META.yml following 986a805c
Father Chrysostomos [Sat, 17 Sep 2011 21:28:29 +0000 (14:28 -0700)]
Update META.yml following 986a805c

10 years agoCorrect punctuation in some POSIX error messages
Father Chrysostomos [Sat, 17 Sep 2011 20:23:07 +0000 (13:23 -0700)]
Correct punctuation in some POSIX error messages

Commit fa22ee54 changed some of the POSIX error messages to be more
consistent, but in doing so made many of them grammatically incorrect.
It is almost always incorrect in English to join two independent
clauses with a comma.

I don’t think it’s particularly important that error messages be gram-
matical; I just don’t want them getting worse over time.  Hence, I
have not touched those that were already ungrammatical.

10 years agoperlop: Clarify \octal slightly
Father Chrysostomos [Sat, 17 Sep 2011 19:46:20 +0000 (12:46 -0700)]
perlop: Clarify \octal slightly

This is to address ticket #94252.

10 years agoMake IO::Handle::getline(s) respect the open pragma
Father Chrysostomos [Sat, 17 Sep 2011 19:09:22 +0000 (12:09 -0700)]
Make IO::Handle::getline(s) respect the open pragma

See <https://rt.cpan.org/Ticket/Display.html?id=66474>.  Also, this
came up in <https://rt.perl.org/rt3/Ticket/Display.html?id=92728>.

The <> operator, when reading from the magic ARGV handle, automatic-
ally opens the next file.  Layers set by the lexical open pragma are
applied, if they are in scope at the point where <> is used.

This works almost all the time, because the common convention is:

    use open ":utf8";

    while(<>) {
        ...
    }

IO::Handle’s getline and getlines methods are Perl subroutines
that call <> themselves.  But that happens within the scope of
IO/Handle.pm, so the caller’s I/O layer settings are ignored.  That
means that these two expressions are not equivalent within in a
‘use open’ scope:

    <>
    *ARGV->getline

The latter will open the next file with no layers applied.

This commit solves that by putting PL_check hooks in place in
IO::Handle before compiling the getline and getlines subroutines.
Those hooks cause every state op (nextstate, or dbstate under the
debugger) to have a custom pp function that saves the previous value
of PL_curcop, calls the default pp function, and then restores
PL_curcop.

That means that getline and getlines run with the caller’s compile-
time hints.  Another way to see it is that getline and getlines’s own
lexical hints are never activated.

(A state op carries all the lexical pragmata.  Every statement
has one.  When any op executes, it’s ‘pp’ function is called.
pp_nextstate and pp_dbstate both set PL_curcop to the op itself.  Any
code that checks hints looks at PL_curcop, which contains the current
run-time hints.)

10 years agoperldelta for h2ph conditional sub fix
Father Chrysostomos [Sat, 17 Sep 2011 18:51:16 +0000 (11:51 -0700)]
perldelta for h2ph conditional sub fix

10 years agodon't redefine macrosubs in .ph
Lukas Mai [Sat, 17 Sep 2011 16:31:00 +0000 (18:31 +0200)]
don't redefine macrosubs in .ph

h2ph generates code of the form

 unless(defined(&FOO)) {
     sub FOO () {42;}
 }

for a C macro like '#define FOO 42'.

The problem with that: 'sub' happens at compile time, 'unless' at runtime.
So the sub is unconditionally defined first, then the unless runs with
an empty body. This behavior was introduced in commit
3d271ce79d39df56470393916b3d33ff26db2c8b (the syntax errors there were
fixed in commit 4a8e146e38ec2045f1f817a7cb578e1b1f80f39f).

There are already two code paths there, one for indentation level > 0
(eval), the other for toplevel definitions (straight sub). This patch
unifies them to always use 'eval' / runtime definitions. This change
shortens the code and makes the conditions actually work.
It moves the check for '#define FOO FOO' further up because I don't
see why it only needs to be done if indentation == 0. I changed the
comparison to use a whitespace-agnostic regex because
'" \&$name" eq $new' looks too brittle (the redundant \ doesn't help).

10 years agoperlobj: Fix pod problems
Karl Williamson [Sat, 17 Sep 2011 18:43:57 +0000 (12:43 -0600)]
perlobj: Fix pod problems

introduced by 7168b2511bddd4967be30033b32ce8b1b6500f6d

10 years agoperldata: Only one "_" is allowed between each digit pair
Karl Williamson [Sat, 17 Sep 2011 18:16:15 +0000 (12:16 -0600)]
perldata: Only one "_" is allowed between each digit pair

10 years agopodcheck.t: Don't use case-sensitive file exclusion
Karl Williamson [Mon, 5 Sep 2011 18:39:23 +0000 (12:39 -0600)]
podcheck.t: Don't use case-sensitive file exclusion

VMS by default doesn't preserve case in its file systems, and so
excluding a file based on case-sensitive matching will fail there.

10 years agoLots of revisions from Damian for perlobj
Damian Conway [Sat, 17 Sep 2011 13:39:56 +0000 (08:39 -0500)]
Lots of revisions from Damian for perlobj

A lot of this is fixing the incorrect meme of "an object is a blessed
reference", but this change also corrects a number of typos, adds clarifying
bits of text, etc.

10 years agoTweaks to perlootut by Damian
Damian Conway [Sat, 17 Sep 2011 13:29:47 +0000 (08:29 -0500)]
Tweaks to perlootut by Damian

Mostly this consists of removing the incorrect meme that an object is a
blessed reference.

10 years agoPOSIX::access() doesn't do ENOTDIR on VMS.
Craig A. Berry [Sat, 17 Sep 2011 12:15:15 +0000 (07:15 -0500)]
POSIX::access() doesn't do ENOTDIR on VMS.

Even though the underlying error is RMS$_DNF.  Go figure.

10 years agoFix recursion warning for ‘no warnings; goto &sub’
Father Chrysostomos [Sat, 17 Sep 2011 07:27:14 +0000 (00:27 -0700)]
Fix recursion warning for ‘no warnings; goto &sub’

Commit 309aab3a made goto &foo make the lexical hints of the caller of
the sub containing the goto visible when foo is called.  CORE subs
need this to function properly when ‘goneto’.  But in that commit I
put the PL_curcop assignment before the recursion check, causing the
warning settings of the caller to be used, instead of those at the
goto.  This commit moves the PL_curcop further down in pp_goto.

10 years agoTests for goto &xsub and lexical hints
Father Chrysostomos [Sat, 17 Sep 2011 01:57:37 +0000 (18:57 -0700)]
Tests for goto &xsub and lexical hints

This new script tests that goto &xsub causes the sub to see the hints,
not of the subroutine it replaces, but of that subroutine’s caller.

10 years agoMake goto &CORE::sub use the right lexical scope
Father Chrysostomos [Sat, 17 Sep 2011 01:54:57 +0000 (18:54 -0700)]
Make goto &CORE::sub use the right lexical scope

Since goto &foo is supposed to replace the current sub call, as though
foo had been called instead, logically foo should see the same lexical
hints that would have been seen if it had been called to begin with.

Regular Perl subs begin with nextstate ops, so they have their own
lexical scopes, but CORE:: subs see the caller’s PL_curcop.  They lack
a nextstate precisely so that they run in the caller’s scope, just as
though a built-in function had been called.

For Perl subs (as opposed to XSUBs), goto-&sub was not reset-
ting PL_curcop to the caller’s value, but leaving as it was, so
goto &CORE::sub would cause the CORE sub to run with the lexical hints
of the subroutine in replaced, instead of that sub’s caller.

This was never a problem until CORE subs came along, as they look like
Perl subs to the internals (they have an op tree and are flagged as
such), but comprise a sequence of ops that can never result from com-
piling Perl source code.

The simple one-line fix is to set PL_curcop in pp_goto for Perl subs
as well as XSUBs.  (For XSUBs it is implied by POPBLOCK.)

10 years agoMerge postinc and postdec
Father Chrysostomos [Fri, 16 Sep 2011 23:15:53 +0000 (16:15 -0700)]
Merge postinc and postdec

They were nearly identical.

10 years agoMerge preinc and postinc
Father Chrysostomos [Fri, 16 Sep 2011 23:10:57 +0000 (16:10 -0700)]
Merge preinc and postinc

They are almost identical.  This gives the compiler less code
to digest.

10 years agoMake ++ and -- work on glob copies
Father Chrysostomos [Fri, 16 Sep 2011 22:48:46 +0000 (15:48 -0700)]
Make ++ and -- work on glob copies

These ops considered typeglobs read-only, even if they weren’t.

10 years ago[perl #93638] $ENV{LS_COLORS} causes miniperl glob failure
Father Chrysostomos [Fri, 16 Sep 2011 21:32:20 +0000 (14:32 -0700)]
[perl #93638] $ENV{LS_COLORS} causes miniperl glob failure

On some systems, csh croaks if the LS_COLORS envvar contains something
it considers invalid.

The easiest and least intrusive fix for now is to localize %ENV before
running csh, though eventually it might be nice to use File::Glob in
miniperl, either by linking it statically or by inlining it.

10 years agoupdate B::Concise test for B::Deparse change
Zefram [Fri, 16 Sep 2011 21:39:07 +0000 (22:39 +0100)]
update B::Concise test for B::Deparse change

10 years agoUpdate CPAN-Meta to CPAN version 2.112580
Chris 'BinGOs' Williams [Fri, 16 Sep 2011 20:18:45 +0000 (21:18 +0100)]
Update CPAN-Meta to CPAN version 2.112580

  [DELTA]

  2.112580  2011-09-15 10:53:59 America/New_York

    [BUGFIX]

    - Use UTF-8 mode for internal structure cloning to avoid bugs
      in Perl <= 5.8.6 (RT #70936) [Dagfinn Ilmari Mannsåker]

10 years agoUpdate CPANPLUS to CPAN version 0.9111
Chris 'BinGOs' Williams [Fri, 16 Sep 2011 20:02:58 +0000 (21:02 +0100)]
Update CPANPLUS to CPAN version 0.9111

  [DELTA]

  Changes for 0.9111      Fri Sep 16 10:15:06 2011
  ================================================
  * Enhance CPANPLUS::Dist::MM Makefile/Makefile.PL
    age checking code to resolve some issues.

10 years agoskip_all is a sub in t/test.pl.
Craig A. Berry [Fri, 16 Sep 2011 20:07:42 +0000 (15:07 -0500)]
skip_all is a sub in t/test.pl.

plan(skip_all => 'foo') is a Test::More-ism that survived the
switch to t/test.pl in 8d646433865d105d3ca0f95dd6593fe343e37aa2
unchanged and caused the test to fail where d_shm is not defined
or IPC::SysV is not built.

10 years agomake B::Deparse handle $[ for older perls
Zefram [Fri, 16 Sep 2011 19:44:51 +0000 (20:44 +0100)]
make B::Deparse handle $[ for older perls

10 years agoNetWare has stdbool.h, so add it as 'define' to config.wc
Nicholas Clark [Fri, 16 Sep 2011 17:45:29 +0000 (19:45 +0200)]
NetWare has stdbool.h, so add it as 'define' to config.wc

[bd31be4baa3ee68a failed to add *any* value for i_stdbool to config.wc]

10 years agoAssorted File::Glob test fix-ups following 528bd3ce85.
Craig A. Berry [Fri, 16 Sep 2011 17:08:19 +0000 (12:08 -0500)]
Assorted File::Glob test fix-ups following 528bd3ce85.

- Avoid list assignment to %ENV, which fails at compile time on VMS.
- Use consistent indentation for readability.
- Mark bsd_glob('~') tests TODO on VMS. The HOME path is successfully
  retrieved, but it normally contains square brackets, which confuse
  glob, because it thinks the directory portion of the path contained
  within brackets is a pattern.  The path probably needs to be
  converted to Unix syntax first.

10 years agoDisallow weakening of read-only references
Father Chrysostomos [Fri, 16 Sep 2011 16:25:10 +0000 (09:25 -0700)]
Disallow weakening of read-only references

$ perl -MScalar::Util=weaken -le 'DESTROY{return if$_++;weaken$_[0]}$x=bless[]'
DESTROY created new reference to dead object 'main' during global destruction.

It says that because the reference count has gone down to -1 (or the
max unsigned value, whichever it is), and the error occurs when
SvREFCNT is true.  So there is no new reference to the dead object;
it’s just the refcount that’s off.

This case is worse:

$ perl -MScalar::Util=weaken -le 'DESTROY{weaken$_[0];$x=$_[0]}bless[];'
Segmentation fault

$_[0]’s reference count is normally lowered manually by sv_clear, to
avoid a recursive call to sv_clear (as lowering the reference count
normally triggers that).  If the variable has been weakened, then
$_[0] no longer holds a reference count.  sv_clear proceeds to destroy
at, as its reference count is 1 (held by $x), causing $x to point to a
freed scalar.  Not good.

Since $_[0] is read-only anyway, it should not be weakenable.

10 years agoperldelta update
Father Chrysostomos [Fri, 16 Sep 2011 16:21:05 +0000 (09:21 -0700)]
perldelta update

10 years agoRevert "Put Jesse's "How a Bill Becomes a Law" into perlhack (with editing)"
Dave Rolsky [Fri, 16 Sep 2011 14:07:52 +0000 (09:07 -0500)]
Revert "Put Jesse's "How a Bill Becomes a Law" into perlhack (with editing)"

This reverts commit 6a945912f2861921b440402072b7053a1dc414a5.

10 years agoPartial perldelta update
Father Chrysostomos [Fri, 16 Sep 2011 13:17:28 +0000 (06:17 -0700)]
Partial perldelta update