Alexander Hartmaier [Fri, 11 Feb 2011 14:36:21 +0000 (15:36 +0100)]
perldoc improvements for map
Father Chrysostomos [Sun, 13 Feb 2011 19:39:58 +0000 (11:39 -0800)]
Add Alexander Hartmaier to AUTHORS
Michael Stevens [Sun, 13 Feb 2011 13:23:30 +0000 (13:23 +0000)]
Remove some whitespace pod warnings in perluniprops.pod
Tony Cook [Thu, 6 Jan 2011 10:52:24 +0000 (21:52 +1100)]
ignore extensions based on the configuration
Tony Cook [Thu, 6 Jan 2011 10:51:30 +0000 (21:51 +1100)]
actually handle the case of extensions being built statically
Father Chrysostomos [Sun, 13 Feb 2011 07:54:27 +0000 (23:54 -0800)]
Correct perldiag/Died
‘die’ does not look at $_.
Father Chrysostomos [Sun, 13 Feb 2011 07:51:35 +0000 (23:51 -0800)]
Reflow perldiag/Deprecated character in \N{...}
It wraps on a 80-character terminal under ‘use diagnostics’.
Father Chrysostomos [Sun, 13 Feb 2011 07:41:39 +0000 (23:41 -0800)]
Resort some perldiag entries
According to the description at the top, non-alphabetic characters and
%-format characters are ignored in alphabetisation.
Father Chrysostomos [Sun, 13 Feb 2011 07:39:13 +0000 (23:39 -0800)]
More perldiag grammar tweaks
Father Chrysostomos [Sun, 13 Feb 2011 07:32:02 +0000 (23:32 -0800)]
Delete perldiag/Can't unshift
This error message was removed by commit
49beac4814c9f4 fourteen
years ago.
Father Chrysostomos [Sun, 13 Feb 2011 07:30:13 +0000 (23:30 -0800)]
Make diagnostics.pm understand messages sharing descriptions
We currently have entries in perldiag like this:
=item Code point 0x%X is not Unicode, may not be portable
=item Code point 0x%X is not Unicode, no properties match it; all inverse properties do
(W utf8) You had a code point above the Unicode maximum of U+10FFFF.
...
diagnostics.pm needs to know that the description applies to the first
=item, as well as to the second.
Father Chrysostomos [Sun, 13 Feb 2011 07:10:23 +0000 (23:10 -0800)]
more perldiag grammar/punctuation tweaks
Father Chrysostomos [Sun, 13 Feb 2011 06:45:54 +0000 (22:45 -0800)]
Add Larwan Berke’s other address to checkAUTHORS.pl
Apocalypse [Sun, 13 Feb 2011 06:08:10 +0000 (23:08 -0700)]
Correctly list the allowed modifiers in the (?...) construct
Father Chrysostomos [Sun, 13 Feb 2011 03:11:41 +0000 (19:11 -0800)]
Reflow perldiag/Can't find Unicode property
so it appears slightly less unsightly under ‘use diagnostics’.
Karl Williamson [Sun, 13 Feb 2011 04:19:02 +0000 (21:19 -0700)]
regex: Deprecate \b{ and \B{
This allows future use by Perl of these
Karl Williamson [Sun, 13 Feb 2011 04:08:50 +0000 (21:08 -0700)]
regcomp.c: include { in unregcognized \q{ warning
The warning message about regex unrecognized escapes passed through is
changed to include any literal '{' following the 2-char escape.
e.g., "\q{" will include the { in the message as part of the escape.
Father Chrysostomos [Sun, 13 Feb 2011 02:05:14 +0000 (18:05 -0800)]
Improve diagnostics.pm’s link rendering.
The number of L<foo/bar> links in perldiag has grown over time, and
diagnostics.pm has never been updated to render them nicely, resulting
in output like this:
Lexing code attempted to stuff non-Latin-1 character into Latin-1 input at
lib/diagnostics.t line 36 (#3)
(F) An extension is attempting to insert text into the current parse
(using lex_stuff_pvn_flags|perlapi/lex_stuff_pvn_flags or similar), but
tried to insert a character that couldn't be part of the current input.
This is an inherent pitfall of the stuffing mechanism, and one of the
reasons to avoid it. Where it is necessary to stuff, stuffing only
plain ASCII is recommended.
I’ve implemented some rudimentary L<> parsing, which should suffice
for perldiag. I think using a real POD processor would be overkill.
Father Chrysostomos [Sun, 13 Feb 2011 01:12:23 +0000 (17:12 -0800)]
Delete perldiag/Can't declare class for non-scalar
This message no longer occurs as of
d5e98372e6efc4, which was included
in 5.12.0.
Father Chrysostomos [Sun, 13 Feb 2011 01:05:56 +0000 (17:05 -0800)]
Delete perldiag/Can't call method in empty package
This message has not been produced since
ac91690fe10ac7691f6f, four-
teen years ago!
Father Chrysostomos [Sun, 13 Feb 2011 01:04:39 +0000 (17:04 -0800)]
perldiag: Combine nearly identical entries
These entries--
=item Can't coerce %s to integer in %s
=item Can't coerce %s to number in %s
=item Can't coerce %s to string in %s
--can be combined into one. Currently, they say exactly the same
thing, except that the first one has more detail. Consequently,
diagnostics.pm will sometimes provide more, and sometimes less, infor-
mation, which is suboptimal.
Father Chrysostomos [Sat, 12 Feb 2011 23:06:20 +0000 (15:06 -0800)]
perldiag: pseudo-hashes are long gone
Father Chrysostomos [Sat, 12 Feb 2011 23:00:42 +0000 (15:00 -0800)]
perlfaq7: there are no empty packages any more
Father Chrysostomos [Sat, 12 Feb 2011 22:54:17 +0000 (14:54 -0800)]
perldiag: typos
Father Chrysostomos [Sat, 12 Feb 2011 21:54:23 +0000 (13:54 -0800)]
perldiag: be realistic
Father Chrysostomos [Sat, 12 Feb 2011 21:53:24 +0000 (13:53 -0800)]
perldiag: typos and slight English improvements
Father Chrysostomos [Sat, 12 Feb 2011 21:15:46 +0000 (13:15 -0800)]
Correct perldiag/Ambiguous use of -%s
Use of -foo to mean "-foo" is valid even in strict mode.
Curtis Jewell [Sat, 12 Feb 2011 18:32:12 +0000 (11:32 -0700)]
Add info to perlhist.pod for 5.12.{2,3}
Father Chrysostomos [Sat, 12 Feb 2011 20:20:52 +0000 (12:20 -0800)]
Clarify perldiag/Ambiguous use of %c{%s%s}
${foo[2]} only warns with built-in keywords. (See the source in
toke.c:S_scan_ident which uses keyword().)
The suggested use of $foo[2] instead of ${foo[2]} does not
always work.
I also added an ‘and’ to clarify the existing text.
Father Chrysostomos [Sat, 12 Feb 2011 18:00:25 +0000 (10:00 -0800)]
Clean up perldiag/Ambiguous use resolved as operator
This entry was missing some words. I supplied them, fixed spelling
mistakes, and reflowed it to look good under -Mdiagnostics.
Father Chrysostomos [Sat, 12 Feb 2011 17:38:29 +0000 (09:38 -0800)]
Bump re.pm’s version
Father Chrysostomos [Sat, 12 Feb 2011 17:36:18 +0000 (09:36 -0800)]
perldebug: capitalise titles
The capitalisation was rather inconsistent throughout.
Father Chrysostomos [Sat, 12 Feb 2011 17:33:38 +0000 (09:33 -0800)]
Fix links to POD sections
Father Chrysostomos [Sat, 12 Feb 2011 15:07:42 +0000 (07:07 -0800)]
perldebug: perl no longer includes the emacs mode
Father Chrysostomos [Sat, 12 Feb 2011 15:07:05 +0000 (07:07 -0800)]
perldebug tweaks
Chris 'BinGOs' Williams [Sat, 12 Feb 2011 13:06:22 +0000 (13:06 +0000)]
Update CPANPLUS to CPAN version 0.91
[DELTA]
Changes for 0.91 Fri Feb 11 22:43:31 2011
================================================
* Making a stable release
Changes for 0.90_13 Mon Feb 7 10:26:35 2011
================================================
* Fix Parse::CPAN::Meta prereq version
Changes for 0.90_12 Sun Feb 6 19:48:49 2011
================================================
* Remove more trailing whitespace spotted by Nicholas Clark
with patch to fix, RT #64976
* Added META.json and MYMETA.json support. Requires a more
recent Parse::CPAN::Meta
* Switch to Digest::SHA and SHA256 checksums instead of
Digest::MD5 and MD5, which has dropped v5.6.x support.
Father Chrysostomos [Sat, 12 Feb 2011 05:37:45 +0000 (21:37 -0800)]
perldebguts tweaks
Father Chrysostomos [Sat, 12 Feb 2011 01:56:53 +0000 (17:56 -0800)]
perldbmfilter tweaks
• ‘Each’ is singular
• ‘If not’, not ‘in not’
Father Chrysostomos [Fri, 11 Feb 2011 22:01:55 +0000 (14:01 -0800)]
perldata: remove duplicate text from adjacent sections
Father Chrysostomos [Fri, 11 Feb 2011 21:46:47 +0000 (13:46 -0800)]
perlfunc/eval: $@ is now set after unwinding
Father Chrysostomos [Fri, 11 Feb 2011 21:43:38 +0000 (13:43 -0800)]
perlfunc: hyphenate a compound adjective
Father Chrysostomos [Fri, 11 Feb 2011 21:36:58 +0000 (13:36 -0800)]
perldata: retitle a section
The ‘Array Joining Delimiter’ section is about array interpolation in
general, not just the $" variable.
Father Chrysostomos [Fri, 11 Feb 2011 21:32:15 +0000 (13:32 -0800)]
perldelta: ‘package;’ is no longer supported
Father Chrysostomos [Fri, 11 Feb 2011 20:48:23 +0000 (12:48 -0800)]
perldata tweaks
David Golden [Fri, 11 Feb 2011 14:31:03 +0000 (09:31 -0500)]
Add Version::Requirements as a dual-life module
Version::Requirements version 0.101020 has been added as a dual-life
module. It provides a standard library to model and manipulates module
prerequisites and version constraints as defined in the CPAN::Meta::Spec.
It is a prerequisite for CPAN::Meta, which will be used by the Perl
CPAN Toolchain to standardize interactions with META and MYMETA files.
David Golden [Fri, 11 Feb 2011 16:01:12 +0000 (11:01 -0500)]
retab t/porting/checkcase.t
David Golden [Fri, 11 Feb 2011 15:58:22 +0000 (10:58 -0500)]
t/porting/checkcase.t should skip directories
We should only care about directory case to the extent
it causes an actual file collision, so we can safely skip
directories and let the file collision tests find issues for us.
Father Chrysostomos [Fri, 11 Feb 2011 14:25:43 +0000 (06:25 -0800)]
perlcompile tweaks
• Hyphenate compound adjectives
• Missing word
Father Chrysostomos [Fri, 11 Feb 2011 14:16:22 +0000 (06:16 -0800)]
perlcommunity: punctuation and capitalisation
Father Chrysostomos [Fri, 11 Feb 2011 14:08:30 +0000 (06:08 -0800)]
perlcommunity: capitalise consistently
Father Chrysostomos [Fri, 11 Feb 2011 14:07:14 +0000 (06:07 -0800)]
perlclib: similar to, not similar as
Father Chrysostomos [Thu, 10 Feb 2011 22:35:57 +0000 (14:35 -0800)]
Relation between overloading and ties: second try
The current text is confusing as it refers to tied values. Variables, not values, are tied (don’t bring up handles, please!).
Father Chrysostomos [Thu, 10 Feb 2011 22:22:02 +0000 (14:22 -0800)]
Revert "The relation between overloading and ties has been fixed."
This reverts commit
c378af320498199f011ee6aca32cef036936dd36.
Other parts of the document still refer to this. More edits are
fifthcoming.
Father Chrysostomos [Thu, 10 Feb 2011 22:08:10 +0000 (14:08 -0800)]
The relation between overloading and ties has been fixed.
Father Chrysostomos [Thu, 10 Feb 2011 22:05:15 +0000 (14:05 -0800)]
typo in perldiag
Father Chrysostomos [Thu, 10 Feb 2011 22:04:54 +0000 (14:04 -0800)]
Prevent destructors called from gp_free from seeing freed SVs
perl5.13.9 -e 'local *foo; $foo = bless[]; (); DESTROY { use Devel::Peek; Dump $foo; }'
This prints:
SV = UNKNOWN(0xff) (0x8044dc) at 0x8044e0
REFCNT = 0
FLAGS = ()
If I do anything with $foo inside the destructor, such as
‘local $foo’, it crashes, of course.
gp_free (called when *foo is being unlocalised on scope exit) does
SvREFCNT_dec(gp->gp_xv) on each of its slots.
SvREFCNT_dec(gp->gp_sv) lowers the refcount of $foo to zero, which
causes the object it references to be destroyed, too. The objects
destructor sees the same $foo still there in the typeglob.
This commit changes gp_free to use a loop, the way S_hfreeentries
(in hv.c) does, checking that everything has been freed before exit-
ing the loop.
(The one-liner above is a reduced version of
perl -MWWW::Scripter -e '$w = new WWW::Scripter; $w->use_plugin(JavaScript); $w->get(q|data:text/html,<a href onclick="throw new Error("XMLHttpRequest")">|); $w->document->links->[0]->click'
which involved *@ and a destructor localising $@.)
Michael Breen [Wed, 9 Feb 2011 10:31:03 +0000 (10:31 +0000)]
perl #82278: Overload documentation: many changes This is a partial rewrite to address long standing issues and comments that this document is confusing, in addition to accurately documenting the behaviour of fallback and nomethod in the context of overloaded operands of different types, as implemented in the fix for bug #71286. Fixes many mistakes, ambiguities, and omissions. Most of the early part of the document has been restructured and revised. For the full list of changes, see bug #82278.
Father Chrysostomos [Thu, 10 Feb 2011 17:20:14 +0000 (09:20 -0800)]
[perl #77692] substr causes panic: sv_len_utf8 cache...
pp_substr contains this comment, which was added in perl 5.0 alpha 2
(commit
79072805bf63):
PUSHs(TARG); /* avoid SvSETMAGIC here */
Calling set-magic when substr returns an lvalue will cause its argu-
ment to be stringified even if the lvalue is not assigned to. That’s
why set-magic has to be avoided.
But the result is that utf8 caches (stored in magic) on TARG are not
reset properly.
Since substr lvalues now follow a different code path (and do not use
TARG at all), it’s perfectly safe to call set-magic at this point.
It’s also the right thing to do in case of other types of magic that
might get attached to TARG.
Tony Cook [Thu, 10 Feb 2011 12:20:53 +0000 (23:20 +1100)]
exporting a static function doesn't work
Nicholas Clark [Thu, 10 Feb 2011 11:14:23 +0000 (11:14 +0000)]
In test.pl, validate that require_ok() and use_ok() are called correctly.
It only provides a subset of the Test::More functionality, but could
inadvertently be used in a way which is not compatible with Test::More, which
is not the intent.
Karl Williamson [Thu, 10 Feb 2011 04:18:48 +0000 (21:18 -0700)]
Fix up \cX for 5.14
Throughout 5.13 there was temporary code to deprecate and forbid
certain values of X following a \c in qq strings. This patch fixes
this to the final 5.14 semantics.
These are:
1) a utf8 non-ASCII character will croak. This is the same
behavior as pre-5.13, but it gives a correct error message, rather than
the malformed utf8 message previously.
2) \c{ and \cX where X is above ASCII will generate a deprecated
message. The intent is to remove these capabilities in 5.16. The
original agreement was to croak on above ASCII, but that does violate
our stability policy, so I'm deprecating it instead.
3) A non-deprecated warning is generated for all other \cX; this is the
same as throughout the 5.13 series.
I did not have the tuits to use \c{} as I had planned in 5.14, but \N{}
can be used instead.
Karl Williamson [Thu, 10 Feb 2011 04:17:54 +0000 (21:17 -0700)]
dquote_static.c: Add comment
Karl Williamson [Thu, 10 Feb 2011 00:34:38 +0000 (17:34 -0700)]
Move grok_bslash_c to dquote.c and make static
No other changes were made
Karl Williamson [Wed, 9 Feb 2011 03:39:48 +0000 (20:39 -0700)]
Move grok_blsash_o and make static
This function is only used in the same places as dquote_static.c is
used, so move it there, and we won't have to worry about changing its
API will break something. No other changes made
Chris 'BinGOs' Williams [Wed, 9 Feb 2011 21:57:08 +0000 (21:57 +0000)]
Update Module-Load-Conditional to CPAN version 0.44
[DELTA]
Changes for 0.44 Wed Feb 9 21:48:42 GMT 2011
=================================================
* Apply podchecker patch from Michael Stevens RT #65601
Chris 'BinGOs' Williams [Wed, 9 Feb 2011 21:20:53 +0000 (21:20 +0000)]
Update Module-Load-Conditional to CPAN version 0.42
[DELTA]
Changes for 0.42 Wed Feb 9 15:27:14 GMT 2011
=================================================
* Apply patch from Phillip Moore RT #60916, which
fixes an edge-case with obj/ref @INC entries.
Chris 'BinGOs' Williams [Wed, 9 Feb 2011 18:47:48 +0000 (18:47 +0000)]
Update Term-UI to CPAN version 0.26
[DELTA]
Changes for 0.26 Wed Feb 9 15:06:32 GMT 2011
=====================================================
* Apply blead patch from Michael Stevens RT #65038
Michael Stevens [Wed, 9 Feb 2011 18:58:49 +0000 (10:58 -0800)]
[perl #83792] Fix doubled "a" in perlgit.pod.
Michael Stevens [Wed, 9 Feb 2011 18:58:24 +0000 (10:58 -0800)]
[perl #83790] Fix links for README.cygwin to have L<>
Michael Stevens [Wed, 9 Feb 2011 18:57:54 +0000 (10:57 -0800)]
[perl #83788] Make a list a list, and add L<> around URLs.
Robin Barker [Wed, 9 Feb 2011 16:31:39 +0000 (16:31 +0000)]
problem with exit in child process in BEGIN
Robin Barker [Wed, 9 Feb 2011 16:08:52 +0000 (16:08 +0000)]
missing paragraph break in perlport
Craig A. Berry [Wed, 9 Feb 2011 13:28:07 +0000 (07:28 -0600)]
Fix use_ok() in vmsish.t broken by
46d4dcbda33f17cc.
test.pl's use_ok() syntax for testing specific imports is incompatible with
Test::More's
Paul LeoNerd Evans [Tue, 8 Feb 2011 18:36:40 +0000 (18:36 +0000)]
Minor bugfixes to Socket::getaddrinfo
Attached are two small bugfixes to getaddrinfo()
Please apply,
Thanks.
--
Paul "LeoNerd" Evans
leonerd@leonerd.org.uk
ICQ# 4135350 | Registered Linux# 179460
http://www.leonerd.org.uk/
From
61fdece8ab9a729206f2633f47e25afd6f05af6a Mon Sep 17 00:00:00 2001
From: Paul "LeoNerd" Evans <leonerd@leonerd.org.uk>
Date: Mon, 24 Jan 2011 18:58:40 +0000
Subject: [PATCH 2/3] canonname should only be present on the first returned result
Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
Nicholas Clark [Tue, 8 Feb 2011 07:36:40 +0000 (07:36 +0000)]
Convert vmsish.t to Test::More from test.pl
It's not actually using any of the features of test.pl.
Nicholas Clark [Tue, 8 Feb 2011 07:15:38 +0000 (07:15 +0000)]
Remove now-erroneous comment about 'test.pl' from version's tests.
It's the boilerplate comment written by h2xs about how to run the tests when
it creates a file test.pl. It's meaningless now that the file in question has
been renamed to version.t and moved directory.
Hugo van der Sanden [Sun, 6 Feb 2011 11:34:25 +0000 (11:34 +0000)]
Fix failing tests.
Commit
211dfcf14199529e353c08dea10d7050e6a4a22a modified the parameter
order in t/op/sprintf.t tests 157-164 to match the code, rather than the
docs. Restored the correct order, now that the code matches the docs.
('perldoc -f sprintf', subsection "order of arguments".)
Hugo van der Sanden [Sun, 6 Feb 2011 11:29:44 +0000 (11:29 +0000)]
Extract format parameter later when vectorizing.
The handling of sprintf '%vx' extracts the format parameter when the 'v' is
seen, ignoring the fact that other formatting options still to be checked
for may need to get the "next parameter" before we get to the format
parameter. Moved the extraction block later, and reindented the rest.
Hugo van der Sanden [Sun, 6 Feb 2011 11:28:01 +0000 (11:28 +0000)]
Add supplied tests from perl #83194.
Supplies two known failures for sprintf '%v.*x'.
Michael Stevens [Mon, 7 Feb 2011 17:36:50 +0000 (17:36 +0000)]
Fix invalid pod in perlmodlib
David Golden [Tue, 8 Feb 2011 01:30:35 +0000 (20:30 -0500)]
Updated Parse::CPAN::Meta to CPAN version 1.4401
[DELTA]
1.4401 Fri Feb 04 2011
- Removed Module::Load::Conditional dependency
1.4400 Fri Feb 04 2011
- Added 'json_backend' and 'yaml_backend' methods to provide
the names of modules used for deserialization
1.4200 Mon Jan 24 2011
- No changes from 1.41_04
1.41_04 Mon Jan 3 2011
- Support PERL_JSON_BACKEND environment (defaulting to JSON::PP)
- Support PERL_YAML_BACKEND environment (defaulting to CPAN::Meta:YAML)
- Update Makefile.PL to install to sitelib on Perl 5.12+
1.41_03 Fri Dec 17 2010
- Throw exception when CPAN::Meta::YAML has a parse error
(RT#47608)
1.41_02 Fri Dec 17 2010
- Convert to using CPAN::Meta::YAML instead of YAML::Tiny
1.41_01 Fri Dec 10 2010
- add support for JSON metafiles and load_* methods (RJBS)
- Move binary file unpacking to test file from Makefile.PL so tests
will pass in the Perl core using a generated Makefile.PL
- Move bundled uupacktool.pl to t/bin/
Father Chrysostomos [Tue, 8 Feb 2011 00:49:38 +0000 (16:49 -0800)]
[perl #82854] utf8, $SIG{__DIE__}, syntax errors and Carp
If a syntax error has occurred, module loading causes the ‘BEGIN not
safe after errors’ error.
As of perl 5.12.0 (commit
7d0994e05, actually), error messages men-
tioning variable names that originate from ‘use utf8’ scopes and are
passed to __DIE__ handlers correctly have the UTF8 flag turned on, so
that a variable named $ġ will actually cause the error message to con-
tain ‘$ġ’, rather than ‘$Ä¡’. (As a side effect, even if the variable
does not contain non-ASCII characters, the error message still gets
the UTF8 flag turned on.)
Carp was using a \d in a regular expression against the error message.
\d loads Unicode tables if the LHS has the UTF8 flag turned on.
This means that this snippet:
use utf8;
use strict;
use CGI::Carp 'fatalsToBrowser';
$c;
dies with ‘BEGIN not safe...’, because the error message that triggers
it is ‘Global symbol "$c" requires explicit package name’, it has the
UTF8 flag turned on, CGI::Carp passes it to Carp.pm, Carp tries to do
a /\d/ match against it and \d tries to load Unicode tables, dying
with ‘BEGIN not safe...‘.
This commit just changes the \d in Carp.pm to [0-9], since that is
what was intended anyway.
Nicholas Clark [Mon, 7 Feb 2011 15:36:40 +0000 (15:36 +0000)]
When running tests from lib/, set @INC and $ENV{PERL5LIB} to ../lib
This ensures (reasonable) consistency with tests in cpan/, dist/ and ext/,
which set this to qw(../../lib ../../t), but are not from t/, hence don't have
t/ implicitly in @INC as '.'
David Mitchell [Mon, 7 Feb 2011 16:02:47 +0000 (16:02 +0000)]
Init PL_cop_seqmax to a high value under DEBUGGING
So that we get to test the effect of the value wrapping back to zero
Karl Williamson [Mon, 7 Feb 2011 05:04:08 +0000 (22:04 -0700)]
regcomp: Add/subtract consts to match embed.fnc
David Mitchell [Sun, 6 Feb 2011 21:13:11 +0000 (21:13 +0000)]
pp_subst: move a common block outside an if/then
The last few commits have been working towards making two
blocks of code identical. Now it's payback time!
David Mitchell [Sun, 6 Feb 2011 21:09:57 +0000 (21:09 +0000)]
pp_subst: do SvUTF8_on next to the SvPOK_only_UTF8
This should leave things functionally unchanged.
This is another step in making two branches of code more identical
David Mitchell [Sun, 6 Feb 2011 19:48:34 +0000 (19:48 +0000)]
fix a s/non-utf8/is-utf8/ bit of nastiness
Commit
3e462cdc2087ddf90984010fabd80c30db92bfa0 provided a fix
for the s/non-utf8/is-utf8/ case by upgrading TARG to UTF8 after the
match, but before the substitution. It used sv_utf8_upgrade() rather than
sv_utf8_upgrade_nomg(), so for example, with a tied variable, FETCH would
get called again, and all the char* pointers such as s would be left
dangling. If the length of the string was unchanged, the code wouldn't
notice this.
Fix by using the _nomg() variant, and by checking whether the string
has been reallocated
David Mitchell [Sun, 6 Feb 2011 19:42:28 +0000 (19:42 +0000)]
Make Perl_sv_utf8_upgrade* respect nomg
One of the code paths in Perl_sv_utf8_upgrade_flags_grow() calls
SvPV_force(), regardless of whether the SV_GMAGIC flag is set or not,
which triggers an unconditional magic get.
David Mitchell [Sat, 5 Feb 2011 14:23:57 +0000 (14:23 +0000)]
pp_subst: remove a superflous PUTBACK/SPAGAIN
These were added around a mg_set() call before the stack-of-stacks
mechanism was introduced, which has made them redundant.
This is another step in making two branches of code more identical
David Mitchell [Sat, 5 Feb 2011 13:32:24 +0000 (13:32 +0000)]
pp_subtr: preserve UTF8 flag in rare cases
There are two main branches in pp_subtr(): the 'in-place' and the other,
depending on whether the replacement string is short enough to be inserted
directly. Commit
80b498e0aacf413fb7460d6882a74c68c1f9df48 back in 2000
changed a SvPOK_only() to a SvPOK_only_UTF8() to preserve the UTF8 bit,
but only on *one* branch. Add the change to the other branch too. This
will only make a difference in rare cases involving 'use bytes' (where it's
arguably broken and generating malformed utf8 anyway); but the main
reason for doing it is to allow soon for some identical code in the two
branches to be de-duplicated.
David Mitchell [Fri, 4 Feb 2011 17:54:11 +0000 (17:54 +0000)]
pp_subst: move a bock of code to to decrease gotos
David Mitchell [Fri, 4 Feb 2011 17:45:47 +0000 (17:45 +0000)]
pp_subst: compact a couple of PUSHes using ?:
David Mitchell [Fri, 4 Feb 2011 16:20:11 +0000 (16:20 +0000)]
pp_subst: remove a duplicate label
(both nope: and ret_no: labelled the same chunk of exit code)
David Mitchell [Fri, 4 Feb 2011 16:18:07 +0000 (16:18 +0000)]
pp_subst: exit as soon as !match
... rather than messing about first deciding whether to process
a successful match inline or not
David Mitchell [Fri, 4 Feb 2011 16:13:51 +0000 (16:13 +0000)]
pp_substr: combine two identical blocks of code
David Mitchell [Sun, 6 Feb 2011 19:13:48 +0000 (19:13 +0000)]
fix typo in new pad.c comment
David Mitchell [Sun, 6 Feb 2011 17:31:39 +0000 (17:31 +0000)]
allow wrap-around of PL_cop_seqmax
After a large number of evals, PL_cop_seqmax (a U32) will wrap around
again to zero. Make the code handle this case by:
1) When incrementing PL_cop_seqmax, never allow its value to become
equal to PERL_PADSEQ_INTRO;
2) When testing for COP_SEQ_RANGE_LOW < seq <= COP_SEQ_RANGE_HIGH,
allow for the fact that _HIGH may be lower than _LOW.
This is a final fix for [perl #83364].
David Mitchell [Sun, 6 Feb 2011 17:04:17 +0000 (17:04 +0000)]
make 0 not a special value for COP_SEQ_RANGE_HIGH
Some of the code in pad.c tests COP_SEQ_RANGE_HIGH for the special value 0.
By instead testing COP_SEQ_RANGE_LOW for the special value PERL_PADSEQ_INTRO
(which it turns out is functioanlly equivalent), we can eliminate one of
the special values that PL_cop_seqmax mustn't be set to.
David Mitchell [Sun, 6 Feb 2011 15:08:34 +0000 (15:08 +0000)]
rename PAD_MAX to PERL_PADSEQ_INTRO
and increase its scope to all the perl core rather than just pad.c.
The scope needs to increase because we'll need to use it in op.c shortly,
and the rename is because it's about to lose any significance as a
numerical value, and just become a magic number to be tested for equality.