| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
This is in preparation for a later commit
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\ |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
- 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
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
- Removed all the empty sections
- Ran it through podtidy
Still need to resolve some open questions/missing changes and run it through a
spellchecker.
|
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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).
|
|/
|
|
|
|
|
|
|
| |
[DELTA]
Changes for 0.9114 Mon Dec 19 21:15:38 2011
================================================
* Fail earlier on unresolvable prereqs as per
[rt.cpan.org #73310]
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
This stops search.cpan.org mistaking its stub contents for the (full,
generated) perlapi manpage.
|
|\ |
|
| | |
|
| |
| |
| |
| |
| | |
Eliminate the file-scoped lexical %Readmepods. Use slurp_or_die() instead of
coding it longhand.
|
| |
| |
| |
| |
| |
| |
| |
| | |
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/
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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*)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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}}.
|
| |
| |
| |
| | |
It's now extracted from get_pod_metadata() into __prime_state().
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
is_duplicate_pod() moves. register_duplicate_pod() can be inlined into
get_pod_metadata().
|