This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Chris 'BinGOs' Williams [Wed, 21 Dec 2011 10:51:06 +0000 (10:51 +0000)]
Sync Maintainers.pl with CPAN for Module-CoreList
Nicholas Clark [Wed, 21 Dec 2011 09:56:26 +0000 (10:56 +0100)]
In installman, move the call to File::Find::find() to the top level.
The code to recursively scan a directory with File::File::find() is now only
used by one caller of podset(), so move it to the call point, reducing the
amount of conditional code within podset(). The first argument to podset()
is now always a reference to a hash of "work to be done". Add an optional
fourth argument to give the directory name for diagnostics.
Nicholas Clark [Wed, 21 Dec 2011 09:22:17 +0000 (10:22 +0100)]
Lazier instructions for removing stale perldeltas for 5.x.0-RC0
The previous instructions were unaware that most of what they describe is
already automated.
Nicholas Clark [Wed, 21 Dec 2011 08:57:59 +0000 (09:57 +0100)]
Merge the refactoring that abolishes pod.lst to blead.
Nicholas Clark [Mon, 19 Dec 2011 19:44:39 +0000 (20:44 +0100)]
Re-order entries in the 'master' array returned by get_pod_metadata().
Now it returns just the pod's name, its filename, and the flags (if any).
Nicholas Clark [Mon, 19 Dec 2011 19:01:29 +0000 (20:01 +0100)]
Prune unused entries from the 'master' array returned by get_pod_metadata().
The description is only used to generate MANIFEST entries now from 'readmes'
and 'pods'. now that perl.pod is the master and is no longer generated from
pod.lst
The leafname/podname distinction is only used by is_duplicate_pod(), so can
be replaced by simple flag, 'dual'.
Replace the now-unused entries with undef to preserve the indices.
Nicholas Clark [Mon, 19 Dec 2011 18:34:56 +0000 (19:34 +0100)]
Rationalise use of the Pod metadata structure returned by get_pod_metadata().
Nothing uses the entries in the 'master' array for the for the elements
flagged as 'aux', so don't generate them. Only buildtoc uses the the 'aux'
hash, and only the keys in sorted order, so replace the hash with a sorted
array.
All entries in the 'master' array are now defined, and references to 5
element arrays, so remove code that checks for this. Likewise, as the 'aux'
flag is no longer used, remove code related to it.
When generating the entries for README files in %our_pods in the consistency
checking code in get_pod_metadata, $_->[4] and $_->[1] will always be equal,
as no READMEs are copied from dual life modules. So use $_->[1] instead, as
this permits a future simplification.
Nicholas Clark [Mon, 19 Dec 2011 13:45:17 +0000 (14:45 +0100)]
Eliminate pod.lst. pod/perl.pod is now the master file for Pod metadata.
perl.pod already contained virtually all the information in pod.lst. Add
the remainder as =begin and =for Pod blocks.
As perl.pod no longer needs to be regenerated, remove the redundant code from
Porting/pod_rules.pl. Update (nearly) all references to pod.lst.
Father Chrysostomos [Wed, 21 Dec 2011 07:06:20 +0000 (23:06 -0800)]
Fixing crash in hint.t
The test that was added in
95cf23680e tickled another bug in the same
code in Perl_hv_copy_hints_hv than the one it fixed, but not on the
committer’s machine.
Not only can a HE from a tied hash have a null entry, but it can also
have an SV for its key. Treating it as a hek and trying to read flags
from it may result in other code being told to free something it
shouldn’t because the SV, when looked at as a hek, appeared to have
the HVhek_FREEKEY flag.
Father Chrysostomos [Wed, 21 Dec 2011 06:53:13 +0000 (22:53 -0800)]
[perl #91416] Deparse open("blah blah blah") properly
‘open bareword’ compiles down to
open
`--+--pushmark
`--gv
whereas ‘open "string"’ compiles down to
open
`--+--pushmark
`--rv2gv
`----gv
the same as ‘open *glob’.
B::Deparse was deparsing the child of the rv2gv, in order to deparse
things like open(my $fh...) as they were entered, instead of
open(*my $fh), which wouldn’t work. gvops were being deparsed as
the name. But this meant that ‘open "open"’ would be deparsed as
‘open open’, which does something different, ‘open’ being a keyword.
It also did that with ‘open '%^$^$%'’, which would deparse without the
quotation marks.
This commit changes the deparsing of filehandle-op -> rv2gv -> gv,
by keeping the explicit * present if the name of the gv is a valid
identifier (so open("foo") and open(*foo), which compile identi-
cally, both come out as open(*foo)), or by using quotation marks if
it is not.
Father Chrysostomos [Wed, 21 Dec 2011 02:02:43 +0000 (18:02 -0800)]
Increase $B::Deparse::VERSION to 1.11
Karl Williamson [Mon, 19 Dec 2011 19:30:10 +0000 (12:30 -0700)]
charnames tests: Add names to some more tests
Karl Williamson [Mon, 19 Dec 2011 19:29:45 +0000 (12:29 -0700)]
test.pl: Add comment
Karl Williamson [Mon, 19 Dec 2011 03:45:14 +0000 (20:45 -0700)]
Autoload charnames for \N{name}
This autoloads charnames.pm when needed. It uses the :full and :short
options. :loose is not used because of its relative unfamiliarity in
the Perl community, and is slower. (If someone later added a typical
"use charnames qw(:full)", things that previously matched under :loose
would start to fail, causing confustion. If :loose does become more
common, we can change this in the future to use it; the converse isn't
true.)
The callable functions in the module are not automatically loaded. To
access them, an explicity "use charnames" must be provided.
Thanks to Tony Cook for doing a code inspection and finding a missing
SPAGAIN.
Karl Williamson [Sat, 1 Oct 2011 19:50:33 +0000 (13:50 -0600)]
toke.c: Reorder a test
This is in preparation for a later commit
Karl Williamson [Thu, 8 Dec 2011 05:30:47 +0000 (22:30 -0700)]
charnames.t: Rmv extra blank in comment
Karl Williamson [Thu, 8 Dec 2011 03:48:01 +0000 (20:48 -0700)]
charnames: Split into two modules
This takes the source and splits it into two modules with the only
changes those that are required to get them to work together.
This is in preparation for future commits
Karl Williamson [Sun, 4 Dec 2011 04:37:48 +0000 (21:37 -0700)]
pod nits
Father Chrysostomos [Tue, 20 Dec 2011 23:25:18 +0000 (15:25 -0800)]
[perl #106282] Don’t crash cloning tied %^H
When hv_iternext_flags is called on a tied hash, the hash entry (HE)
that it returns has no value. Perl_hv_copy_hints_hv, added in commit
5b9c067131, was assuming that it would have a value and calling
sv_magic on it, resulting in a crash.
Commit b50b205 made namespace::clean’s test suite crash, because
strict.pm started using %^H. It was already possible to crash
namespace::clean with other hh-using pragmata, like sort:
# namespace::clean 0.21 only uses ties in the absence of B:H:EOS
use Devel::Hide 'B::Hooks::EndOfScope';
use sort "stable";
use namespace::clean;
use sort "stable";
{;}
It was possible to trigger the crash with no modules like this:
package namespace::clean::_TieHintHash;
sub TIEHASH { bless[] }
sub STORE { $_[0][0]{$_[1]} = $_[2] }
sub FETCH { $_[0][0]{$_[1]} }
sub FIRSTKEY { my $a = scalar keys %{$_[0][0]}; each %{$_[0][0]} }
sub NEXTKEY { each %{$_[0][0]} }
package main;
BEGIN {
$^H{foo} = "bar";
tie( %^H, 'namespace::clean::_TieHintHash' );
$^H{foo} = "bar";
}
{ ; }
This commit puts in a simple null check before calling sv_magic. Tied
hint hashes still do not work, but they now only work as badly as in
5.8 (i.e., they don’t crash).
I don’t think tied hint hashes can ever be made to work properly, even
if we do make Perl_hv_copy_hints_hv copy the hash properly, because in
the scope where %^H is tied, the tie magic takes precedence over hint
magic, preventing the underlying he chain from being updated. So
hints set in that scope will just not stick.
Dave Rolsky [Tue, 20 Dec 2011 22:13:53 +0000 (16:13 -0600)]
Link to release announcement in epigraphs.pod
Dave Rolsky [Tue, 20 Dec 2011 21:43:31 +0000 (15:43 -0600)]
Add a step asking release managers to blog about their epigraph
Dave Rolsky [Tue, 20 Dec 2011 21:41:47 +0000 (15:41 -0600)]
Add the 5.15.6 epigraph
Dave Rolsky [Tue, 20 Dec 2011 21:39:27 +0000 (15:39 -0600)]
Add details on how to figure out if rt.perl.org needs to be updated.
Dave Rolsky [Tue, 20 Dec 2011 21:30:25 +0000 (15:30 -0600)]
Create a perldelta for 5.15.7
Dave Rolsky [Tue, 20 Dec 2011 18:04:39 +0000 (12:04 -0600)]
Merge branch 'drolsky/release-5.15.6' into blead
Dave Rolsky [Tue, 20 Dec 2011 17:23:36 +0000 (11:23 -0600)]
Add perldelta entry for new version of Module::CoreList
Dave Rolsky [Tue, 20 Dec 2011 17:22:05 +0000 (11:22 -0600)]
Fix version of Module::CoreList in 5.15.6
Dave Rolsky [Tue, 20 Dec 2011 17:19:58 +0000 (11:19 -0600)]
Add Changes entry for Module::CoreList
Nicholas Clark [Tue, 20 Dec 2011 10:33:26 +0000 (11:33 +0100)]
pod_rules.pl was always (re)building everything, not what was asked for.
The bug was introduced by commit
b78c110439167132, which split
Porting/pod_rules.pl out from pod/buildtoc. The previous code in buildtoc
would correctly honour the command line options, and only (re)build the
requested files.
Steffen Mueller [Tue, 20 Dec 2011 07:42:45 +0000 (08:42 +0100)]
Use tr/_// instead of eval $VERSION
Also bumps the version of all contained modules to 3.39_01, which is the
version of a new PathTools CPAN release (and the code is in sync with
this commit).
Dave Rolsky [Tue, 20 Dec 2011 02:00:14 +0000 (20:00 -0600)]
Add 5.15.6 release date to perlhist
Dave Rolsky [Tue, 20 Dec 2011 01:52:11 +0000 (19:52 -0600)]
Updated Module::CoreList for 5.15.6 - including $VERSION bump
Dave Rolsky [Mon, 19 Dec 2011 22:57:48 +0000 (16:57 -0600)]
Bump the perl version in various places for 5.15.6
Dave Rolsky [Mon, 19 Dec 2011 22:44:01 +0000 (16:44 -0600)]
Final pass through perldelta
- copy edited for clarity & typos
- standardized on two spaces after a period
- detabified
- ran it through a spellchecker
- ran it through podtidy one last time
Dave Rolsky [Mon, 19 Dec 2011 21:55:54 +0000 (15:55 -0600)]
Remove an XXX note - questions resolved
Dave Rolsky [Mon, 19 Dec 2011 21:51:38 +0000 (15:51 -0600)]
The POSIX TCSANOW appears to have been introduced in 5.15.3
Dave Rolsky [Mon, 19 Dec 2011 21:47:15 +0000 (15:47 -0600)]
Not going to document 43d9ecf either
Dave Rolsky [Mon, 19 Dec 2011 21:46:26 +0000 (15:46 -0600)]
Not going to document f300909 in perldelta
Dave Rolsky [Mon, 19 Dec 2011 21:46:09 +0000 (15:46 -0600)]
Perldelta for b0f2e9e - buildtoc fixes
Dave Rolsky [Mon, 19 Dec 2011 21:38:10 +0000 (15:38 -0600)]
Small pod fix - s/build/built/
Dave Rolsky [Mon, 19 Dec 2011 21:36:10 +0000 (15:36 -0600)]
Clean up perldelta.pod for release
- Removed all the empty sections
- Ran it through podtidy
Still need to resolve some open questions/missing changes and run it through a
spellchecker.
Chris 'BinGOs' Williams [Mon, 19 Dec 2011 21:34:59 +0000 (21:34 +0000)]
Update CPANPLUS to CPAN version 0.9114
[DELTA]
Changes for 0.9114 Mon Dec 19 21:15:38 2011
================================================
* Fail earlier on unresolvable prereqs as per
[rt.cpan.org #73310]
Chris 'BinGOs' Williams [Mon, 19 Dec 2011 19:15:39 +0000 (19:15 +0000)]
Sync Maintainers.pl with teh CPAN
Steffen Mueller [Mon, 19 Dec 2011 19:05:43 +0000 (20:05 +0100)]
SelfLoader: Version bump to match CPAN release
Steffen Mueller [Mon, 19 Dec 2011 17:05:24 +0000 (18:05 +0100)]
ExtUtils::ParseXS: Version bump and changelog for CPAN release
Nicholas Clark [Mon, 19 Dec 2011 15:25:44 +0000 (16:25 +0100)]
Restructure the heredocs in perlmodlib.PL so the file as-is is valid Pod.
Using =cut as the heredoc terminator makes the whole file parse as
(reasonably) sane Pod as-is to anything that attempts to brute-force treat
it as such. The content is already useful - this just makes it tidier, by
stopping anything doing this mistaking the rest of the Perl code for Pod.
Nicholas Clark [Mon, 19 Dec 2011 14:07:00 +0000 (15:07 +0100)]
Add autodoc.pl to the 'no_index' section of META.yml
This stops search.cpan.org mistaking its stub contents for the (full,
generated) perlapi manpage.
Nicholas Clark [Mon, 19 Dec 2011 13:09:40 +0000 (14:09 +0100)]
Merge installman and pod/buildtoc improvements to blead.
Nicholas Clark [Mon, 19 Dec 2011 09:21:28 +0000 (10:21 +0100)]
Note the user-visible installman changes in perldelta.
Nicholas Clark [Mon, 19 Dec 2011 07:14:23 +0000 (08:14 +0100)]
Some pod_lib.pl cleanups.
Eliminate the file-scoped lexical %Readmepods. Use slurp_or_die() instead of
coding it longhand.
Nicholas Clark [Sun, 18 Dec 2011 19:13:11 +0000 (20:13 +0100)]
installman should use the data in pod.lst to track dual-life pods in lib/
This ensures that perlfaq*, perlglossary, perlxs, perlxstut and perldoc's
man pages are installed in man1, not man3, along with any future dual-life
pods. This is an improvement on commit
0beff067932254cd which only dealt with
perlfaq* and perlglossary, and had the unfortunate side effect of also
causing these 11 files to be installed to bin/
Nicholas Clark [Fri, 16 Dec 2011 15:47:40 +0000 (16:47 +0100)]
Various installman cleanups.
Eliminate the C<use File::Copy> and various $Is_* vars, unneeded since
commit
9e6fc21fcd859351 moved the code that uses them into install_lib.pl
Move the filename-based skip code into the callback for File::Find::find(),
as this saves ever storing them in %$modpods.
Eliminate @to_process, which has been mostly redundant since commit
a274383458745101, and completely redundant since commits
02bc0c09b2a02ba6^
and
02bc0c09b2a02ba6.
Eliminate the batchlimit command line option, which has been redundant since
commit
a274383458745101.
Nicholas Clark [Sun, 18 Dec 2011 18:36:14 +0000 (19:36 +0100)]
In installman, pod2man() now takes a hashref instead of a list of scripts.
Avoid needless splitting and joining of paths when processing the "scripts"
from utils.lst. Remove the unused lexical $where2. Remove an inaccurate
comment about nochdir.
Nicholas Clark [Sun, 18 Dec 2011 18:22:38 +0000 (19:22 +0100)]
In pod2man() in installman, transpose the keys and values of %modpods.
This doesn't change the order of processing (Pod pathnames all in lib/ sort
in the same order as module names), but will make future refactoring easier.
Nicholas Clark [Fri, 16 Dec 2011 13:59:14 +0000 (14:59 +0100)]
Stop installing the manpage for XS::Typemap.
Like XS::APItest, we don't install the module anyway, so there's no need
to have confusing documentation installed. (See commit
ae5391ad3eac0349,
which made the analogous change for XS::APItest*)
Nicholas Clark [Sun, 18 Dec 2011 16:56:45 +0000 (17:56 +0100)]
In buildtoc, eliminate @modpods by building %Found directly.
There's no need to use an intermediate array to store the results from
calling File::Find::find() as its only use is to build a hash of work to do,
by looping over it once.
Standardise on !! for the regex delimiter, and convert ^ and $ to \A and \z.
The temporary variable $pod can be eliminated, because it doesn't matter
whether $_ ends '.pod' or '.pm' in the code that follows.
Nicholas Clark [Sun, 18 Dec 2011 16:37:20 +0000 (17:37 +0100)]
In buildtoc, pass 'no_chdir' to File::Find::find().
Nicholas Clark [Sun, 18 Dec 2011 16:21:14 +0000 (17:21 +0100)]
In buildtoc, move the "has a NAME?" file check into podset().
Instead of opening each file to search for /^=head1\s+NAME\b/ within the
File::Find::find() callback, move the check to the main processing code in
podset(), where the file is already open. Seeking the file back to the start
is less costly than closing and subsequently reopening, and performing all the
reads at the same time reduces pressure on the OS disk cache.
Nicholas Clark [Sun, 18 Dec 2011 14:03:18 +0000 (15:03 +0100)]
Prime the duplicate Pod cache the first time is_duplicate_pod() is called.
Previously it was primed when get_pod_metadata() was called. This removes the
undocumented assumption that is_duplicate_pod() will only be called after
get_pod_metadata(), and avoids reading 14 Pod files to calculate their MD5s
unless actually necessary.
This change means that the array references in @{$state{master}} are being
accessed much later during runtime. This reveals that podset() in buildtoc
had been clobbering its callers $_, which happened to be an alias to the
current element of @{$state{master}}.
Nicholas Clark [Sun, 18 Dec 2011 10:00:15 +0000 (11:00 +0100)]
In pod_lib.pl, split out the code that initialises %state from pod.lst
It's now extracted from get_pod_metadata() into __prime_state().
Nicholas Clark [Sun, 18 Dec 2011 09:35:09 +0000 (10:35 +0100)]
Change get_pod_metadata() to take a callback to report consistency errors.
Using the callback to report errors instead of passing the 'inconsistent'
arrayref back in the state means that get_pod_metadata() doesn't even need
to calculate this information if it's not going to be used.
Nicholas Clark [Sat, 17 Dec 2011 10:32:54 +0000 (11:32 +0100)]
Move the pod de-duplication logic from buildtoc to pod_lib.pl
is_duplicate_pod() moves. register_duplicate_pod() can be inlined into
get_pod_metadata().
Nicholas Clark [Sat, 17 Dec 2011 10:03:15 +0000 (11:03 +0100)]
In installman, break the de-duplication code out from from podset().
It is both clearer and simpler to have separate subroutines to implement
the logic to avoid processing copied podfiles more than once.
Nicholas Clark [Sat, 17 Dec 2011 20:45:14 +0000 (21:45 +0100)]
buildtoc should use the correct path when looking for a .pm's .pod file.
This corrects commit
be6d62867c9b925b, which attempted to avoid a warning
about lack of Pod in a .pm file if it had a corresponding .pod file.
However, the commit would never actually find the .pod file because it used
$File::Find::name as the basis for the search, instead of $_. This falls
foul of the same problem as described in the previous commit -
File::Find::find() changes directory, hence $File::Find::name points
somewhere bogus, whilst $_ contains the name to use.
With this change, pod/buildtoc no longer warns about the 20 relevant files.
Nicholas Clark [Sat, 17 Dec 2011 20:32:58 +0000 (21:32 +0100)]
If buildtoc can't open a Pod file, that's fatal, not a warning and skip.
The logic within the File::Find::find() callback was to attempt to open any
file, and if it failed, politely report a warning and run system ls -l on the
offending name. It's been the same since pod/buildtoc was added in December
1995 by commit
cb1a09d0194fed9b ("This is patch.2b1g to perl5.002beta1.").
However the ls -l would never have worked, as it uses the full pathname
(from the top of the build tree), while File::Find::find() has changed the
current directory to the directory which it is scanning. The failure to open
"should" never happen, so if it does, it should be brought to a human's
attention instead of being glossed over.
The new approach takes less code.
Nicholas Clark [Thu, 15 Dec 2011 13:27:01 +0000 (14:27 +0100)]
If buildtoc spots duplicated pods, that's an error condition, not a skip.
As of commit
9a8cc8a45d2bc98d, pod/buildtoc no longer scans ext/ for files
containing Pod. Hence it will no longer find the same file in both lib/ and
ext/, and hence the de-duplication code is no longer needed for correct
functionality. Duplicate Pods existing should never happen, so instead of
removing the code, it feels more useful to make it a build time error.
Add an editor block.
Nicholas Clark [Thu, 15 Dec 2011 09:15:56 +0000 (10:15 +0100)]
Tidy the Pod exclusion rules in buildtoc.
The rule to skip lib/Attribute/Handlers/demo/ was added by commit
a83b6f4664409877 in June 2001, and rendered obsolete when Attribute:Handlers
was moved to ext/ with commit
261f6fe66fcb39f4 in February 2009.
The rule to skip Deve::PPPort's harness was added by commit
428dc699a4f0702c
and tweaked by commit
34babc168865edbd, both in November 2001.
It was rendered obsolete when the harness was merged into the main
Devel::PPPort code in commit
4428420042d0cf28 in December 2001.
The rule to skip Math::BitInt's tests, added in commit
ba62762e535f4b26 in
November 2001 was made superfluous when the general rule to skip test
directories was added by commit
2a55110093932342 in May 2003.
Nicholas Clark [Tue, 13 Dec 2011 15:16:37 +0000 (15:16 +0000)]
installman only needs match =head1 to identify files with Pod.
Commit
63fae90782a9851d made installman skip files which contained no Pod.
However, the regex used, /^=(?:head\d+|item|pod)\b/ is overly permissive.
All files with Pod actually match /^=head1\b/. Moreover, a Pod file which
does not start with a =head1 is not going to generate a well formed man
page. Hence restrict the files processed to those which are well formed.
Chris 'BinGOs' Williams [Mon, 19 Dec 2011 11:27:11 +0000 (11:27 +0000)]
Sync Data-Dump and Attribute-Handlers versions in Maintainers.pl
Chris 'BinGOs' Williams [Mon, 19 Dec 2011 09:53:37 +0000 (09:53 +0000)]
Update IO-Compress to CPAN version 2.046
[DELTA]
2.046 18 December 2011
* Minor update to bin/zipdetails
* Typo in name of IO::Compress::FAQ.pod
* IO::Uncompress::Unzip
- Example for walking a zip file used eof to control the outer
loop. This is wrong.
* IO::Compress::Zip
- Change default for CanonicalName to false.
[RT# 72974]
Nicholas Clark [Mon, 19 Dec 2011 09:51:39 +0000 (10:51 +0100)]
Update F<Copying> with the FSF's new address.
It is now a byte-for-byte identical copy of the GPL version 1, as downloaded
from http://www.gnu.org/licenses/old-licenses/gpl-1.0.txt
As well as changing their address, at some point the FSF have changed the
amount of indentation on the titles. This commit also reverts our change of
` to '. For this file it seems better to be byte-for-byte identical with the
FSF, even if this does not conform to our formatting.
Steffen Mueller [Mon, 19 Dec 2011 08:19:09 +0000 (09:19 +0100)]
Data::Dumper: Changelog and version bump
Bump to dev version for CPAN release.
Steffen Mueller [Mon, 19 Dec 2011 07:21:32 +0000 (08:21 +0100)]
Attribute::Handlers 0.93 changelog
In case you wonder why I think the README has no place in core while the
Changelog does, then consider the amount of unique information in an
auto-generated README file.
Steffen Mueller [Mon, 19 Dec 2011 07:15:34 +0000 (08:15 +0100)]
No need to ship Attribute::Handlers README in core
It's really rather superfluous.
Father Chrysostomos [Mon, 19 Dec 2011 05:44:42 +0000 (21:44 -0800)]
perldelta for 41b1a11 :-)
Father Chrysostomos [Mon, 19 Dec 2011 04:50:29 +0000 (20:50 -0800)]
perldelta for deparsing require <binop>
Father Chrysostomos [Mon, 19 Dec 2011 04:48:40 +0000 (20:48 -0800)]
Fix deparsing of require "a".$1
Commit
30fcd6c41 tried to deparse ‘no 6’ correctly by checking
whether the kidop of a require has the OPpCONST_NOVER flag set,
but it did not check the op type, so it ended up with a false
positive for any binop (OPpCONST_NOVER being 2).
Father Chrysostomos [Mon, 19 Dec 2011 04:45:59 +0000 (20:45 -0800)]
Teach B::Concise about OPpCONST_NOVER
Father Chrysostomos [Mon, 19 Dec 2011 04:29:39 +0000 (20:29 -0800)]
perldelta up to 8d0b139
Ricardo Signes [Mon, 19 Dec 2011 01:02:12 +0000 (20:02 -0500)]
test that version.pm does not clobber locale
Karl Williamson [Tue, 26 Apr 2011 03:01:47 +0000 (21:01 -0600)]
toke.c, util.c: setlocale returns new locale, not old
This means we have to call setlocale with a NULL second parameter
to get the correct old value; then call it with the new value
Father Chrysostomos [Sun, 18 Dec 2011 22:12:36 +0000 (14:12 -0800)]
perldelta for splain/%X
Father Chrysostomos [Sun, 18 Dec 2011 21:34:44 +0000 (13:34 -0800)]
Stop readline(*$glob_copy) from clearing PL_last_in_gv
This is related to commit
8dc99089, which fixed a similar bug in tell.
In readline(*$glob_copy), the * makes a mortal copy of $glob_copy,
turning off its fake flag. readline sets PL_last_in_gv to its argu-
ment, but it gets freed at the end of the statement and PL_last_in_gv
gets cleared.
Father Chrysostomos [Sun, 18 Dec 2011 20:42:38 +0000 (12:42 -0800)]
perldelta up to
6728c8514a
Father Chrysostomos [Sun, 18 Dec 2011 18:43:51 +0000 (10:43 -0800)]
Revert "Make scalar() propagate lvalueness"
This reverts commit
d408447cb636e46fcb4f7fe7d0909bb351b7ba22.
Father Chrysostomos [Sun, 18 Dec 2011 18:43:25 +0000 (10:43 -0800)]
[perl #106288] Tests for \scalar @array
Karl Williamson [Sun, 18 Dec 2011 18:46:37 +0000 (11:46 -0700)]
utf8.c: white-space, comment clarification only
Karl Williamson [Sun, 18 Dec 2011 18:38:34 +0000 (11:38 -0700)]
utf8.c: foldEQ_utf8_flags() use specific flag, not just any
The test here was if any flag was set, not the particular desired one.
This doesn't cause any bugs as things are currently structured, but
could in the future.
The reason it doesn't cause any bugs currently are that the other
flags are tested first, and only if they are both 0 does this flag get
tested.
Dave Rolsky [Sun, 18 Dec 2011 16:10:09 +0000 (10:10 -0600)]
Remove some commits from the to-doc list that have been covered
Craig A. Berry [Sun, 18 Dec 2011 13:15:08 +0000 (07:15 -0600)]
perldelta updates for VMS changes.
Father Chrysostomos [Sun, 18 Dec 2011 08:00:31 +0000 (00:00 -0800)]
Stop seek($glob_copy...) from clearing PL_last_in_gv
seek had the same bug as tell. Here is the commit message from
8dc99089, which fixed tell:
----------------------------------------------------------------------
Stop tell($glob_copy) from clearing PL_last_in_gv
This bug is a side effect of rv2gv’s starting to return an incoercible
mortal copy of a coercible glob in 5.14:
$ perl5.12.4 -le 'open FH, "t/test.pl"; $fh=*FH; tell $fh; print tell'
0
$ perl5.14.0 -le 'open FH, "t/test.pl"; $fh=*FH; tell $fh; print tell'
-1
In the first case, tell without arguments is returning the position of
the filehandle.
In the second case, tell with an explicit argument that happens to
be a coercible glob (tell has an implicit rv2gv, so tell $fh is actu-
ally tell *$fh) sets PL_last_in_gv to a mortal copy thereof, which is
freed at the end of the statement, setting PL_last_in_gv to null. So
there is no ‘last used’ handle by the time we get to the tell without
arguments.
This commit adds a new rv2gv flag that tells it not to copy the glob.
By doing it unconditionally on the kidop, this allows tell(*$fh) to
work the same way.
Let’s hope nobody does tell(*{*$fh}), which will unset PL_last_in_gv
because the inner * returns a mortal copy.
This whole area is really icky. PL_last_in_gv should be refcounted,
but that would cause handles to leak out of scope, breaking programs
that rely on the auto-closing ‘feature’.
Father Chrysostomos [Sun, 18 Dec 2011 07:48:51 +0000 (23:48 -0800)]
Stop eof($glob_copy) from clearing PL_last_in_gv
eof had the same bug as tell. Here is the commit message from
8dc99089, which fixed tell:
----------------------------------------------------------------------
Stop tell($glob_copy) from clearing PL_last_in_gv
This bug is a side effect of rv2gv’s starting to return an incoercible
mortal copy of a coercible glob in 5.14:
$ perl5.12.4 -le 'open FH, "t/test.pl"; $fh=*FH; tell $fh; print tell'
0
$ perl5.14.0 -le 'open FH, "t/test.pl"; $fh=*FH; tell $fh; print tell'
-1
In the first case, tell without arguments is returning the position of
the filehandle.
In the second case, tell with an explicit argument that happens to
be a coercible glob (tell has an implicit rv2gv, so tell $fh is actu-
ally tell *$fh) sets PL_last_in_gv to a mortal copy thereof, which is
freed at the end of the statement, setting PL_last_in_gv to null. So
there is no ‘last used’ handle by the time we get to the tell without
arguments.
This commit adds a new rv2gv flag that tells it not to copy the glob.
By doing it unconditionally on the kidop, this allows tell(*$fh) to
work the same way.
Let’s hope nobody does tell(*{*$fh}), which will unset PL_last_in_gv
because the inner * returns a mortal copy.
This whole area is really icky. PL_last_in_gv should be refcounted,
but that would cause handles to leak out of scope, breaking programs
that rely on the auto-closing ‘feature’.
Father Chrysostomos [Sun, 18 Dec 2011 07:44:42 +0000 (23:44 -0800)]
Oops. You can’t do ->op_first on a baseop.
This was the fault of commit
8dc99089.
Matthew Horsfall (alh) [Thu, 8 Dec 2011 03:10:41 +0000 (22:10 -0500)]
Minor spelling/grammar/context fixes
Father Chrysostomos [Sun, 18 Dec 2011 07:01:07 +0000 (23:01 -0800)]
Stop tell($glob_copy) from clearing PL_last_in_gv
This bug is a side effect of rv2gv’s starting to return an incoercible
mortal copy of a coercible glob in 5.14:
$ perl5.12.4 -le 'open FH, "t/test.pl"; $fh=*FH; tell $fh; print tell'
0
$ perl5.14.0 -le 'open FH, "t/test.pl"; $fh=*FH; tell $fh; print tell'
-1
In the first case, tell without arguments is returning the position of
the filehandle.
In the second case, tell with an explicit argument that happens to
be a coercible glob (tell has an implicit rv2gv, so tell $fh is actu-
ally tell *$fh) sets PL_last_in_gv to a mortal copy thereof, which is
freed at the end of the statement, setting PL_last_in_gv to null. So
there is no ‘last used’ handle by the time we get to the tell without
arguments.
This commit adds a new rv2gv flag that tells it not to copy the glob.
By doing it unconditionally on the kidop, this allows tell(*$fh) to
work the same way.
Let’s hope nobody does tell(*{*$fh}), which will unset PL_last_in_gv
because the inner * returns a mortal copy.
This whole area is really icky. PL_last_in_gv should be refcounted,
but that would cause handles to leak out of scope, breaking programs
that rely on the auto-closing ‘feature’.
Father Chrysostomos [Sun, 18 Dec 2011 03:23:20 +0000 (19:23 -0800)]
Avoid an unused temp scalar in sv.c:S_sv_unglob
This is something I missed in
804b5ed7.
Father Chrysostomos [Sun, 18 Dec 2011 03:22:51 +0000 (19:22 -0800)]
[perl #97988] Nullify PL_last_in_gv when unglobbed
Code like this can cause PL_last_in_gv to point to a coercible glob:
$f{g} = *STDOUT;
readline $f{g};
If $f{g} is then modified such that it is no longer a glob,
PL_last_in_gv ends up pointing to a non-glob:
$f{g} = 3;
If $f{g} is freed now, the PL_last_in_gv-nulling code in sv_clear will
be skipped, as it only applies to globs.
undef %f; # now PL_last_in_gv points to a freed scalar
The resulting freed scalar can be reused by another handle,
*{"foom"} = *other;
causing tell() with no arguments to return the position on *other,
even though *other was no the last handle read from.
This commit fixes it by nulling PL_last_in_gv when a coercible glob
is coerced.
Father Chrysostomos [Sat, 17 Dec 2011 20:56:52 +0000 (12:56 -0800)]
Cwd pod consistency tweaks
Father Chrysostomos [Sat, 17 Dec 2011 20:54:48 +0000 (12:54 -0800)]
perldiag: Consistent style of diag categories
Father Chrysostomos [Sat, 17 Dec 2011 20:50:14 +0000 (12:50 -0800)]
Fix the one remaining long line in perldiag