| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
By definition a regex pattern that is in UTF-8 uses Unicode matching
rules, and EXACTF is non-Unicode (unless the target string is UTF-8).
Therefore an EXACTF node will never be generated for a UTF-8 pattern,
and there is no need to test for it being so.
|
|
|
|
|
| |
This happens only in doing debug output. Initialize these two debugging
variables
|
| |
|
| |
|
|
|
|
|
| |
This is the wrong test for the cited ticket. That one is for tests
occurring in bracketed character classes.
|
|
|
|
|
| |
This reflects that now that there is autoloading of \N{}, such tests can
go in this file
|
| |
|
|
|
|
|
| |
The break out of the loop should be done before the debug statements
that indicate the things that happen only if the break isn't done.
|
| |
|
|
|
|
| |
Pod::Tidy 0.10 added this. It's cleaner than setting $Text::Wrap::columns.
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
The previous instructions were unaware that most of what they describe is
already automated.
|
|\ |
|
| |
| |
| |
| | |
Now it returns just the pod's name, its filename, and the flags (if any).
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
‘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.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|