Chris 'BinGOs' Williams [Tue, 7 Jan 2014 10:26:40 +0000 (10:26 +0000)]
Integrate Module-CoreList 3.03 changes for v5.18.2
Chris 'BinGOs' Williams [Mon, 6 Jan 2014 16:11:48 +0000 (16:11 +0000)]
Update Pod-Perldoc to CPAN version 3.21
[DELTA]
3.21 - Mon Jan 6 02:17:07 UTC 2014
* Add '-a' flag to search through perlapi
documentation. Patch by Matthew Horsfall.
* Apply RT #91733 to install perldoc.pod in the
right place. Should fix RT #88898 too. Patch
by Dave Mitchell.
3.21_01 - Tue Nov 19 17:07:46 UTC 2013
* Do not modify @INC to look for docs perl RT #120357
(Patch by Kent Fredric)
* Prefer mandoc on bitrig
* Fix typos
Steve Hay [Mon, 6 Jan 2014 12:51:32 +0000 (12:51 +0000)]
Fix up the MAP for version following its upgrade to version 0.9906
It appears that vutil.c is also customized for blead.
Steve Hay [Mon, 6 Jan 2014 09:31:10 +0000 (09:31 +0000)]
version has been upgraded from version 0.9904 to 0.9906
The customizations to two tests in CPAN RT#87513 are no longer required,
and lib/version/typemap no longer exists.
Steve Hay [Mon, 6 Jan 2014 08:54:50 +0000 (08:54 +0000)]
Upgrade libnet from version 1.23 to 1.24
H.Merijn Brand [Mon, 6 Jan 2014 07:26:26 +0000 (08:26 +0100)]
XS is more C than perl. Use C-comments please
Daniel Dragan [Mon, 6 Jan 2014 02:51:11 +0000 (21:51 -0500)]
ext/Win32CORE/Win32CORE.c, rmv redundant stack & mark code
Poping the mark and repushing it is redundant.
Karl Williamson [Sun, 5 Jan 2014 05:21:14 +0000 (22:21 -0700)]
utf8.c: Move a bunch of deprecated fcns to mathoms.c
These functions will be out of the way in mathoms. There were a few
that could not be moved, as-is, so I left them.
Karl Williamson [Sun, 5 Jan 2014 03:28:24 +0000 (20:28 -0700)]
utf8.c: Use existing macros instead of duplicate code
In all these cases, there is an already existing macro that does exactly
the same thing as the code that this commit replaces. No sense
duplicating logic.
Tony Cook [Mon, 6 Jan 2014 02:58:56 +0000 (13:58 +1100)]
[perl #120832] match -links checks against find(1) not expect
Some filesystems only simulate . and .. so an empty directory doesn't
have a link count of 2.
Shlomi Fish [Thu, 19 Dec 2013 11:06:42 +0000 (13:06 +0200)]
Crash in tab completion with Term::ReadLine::Gnu.
Perhaps it also affects Term::ReadLine::Perl / Term::ReadLine::Perl5 .
I still need to test with PadWalker installed. No tests were added, but
it passes all existing tests.
Chris 'BinGOs' Williams [Sun, 5 Jan 2014 12:23:03 +0000 (12:23 +0000)]
Update Time-Piece to CPAN version 1.27
[DELTA]
1.27 2014-01-03
- portability fixes for XS changes in 1.25_01
John Peacock [Sat, 4 Jan 2014 20:42:14 +0000 (15:42 -0500)]
Fix regression with $version::LAX and bump release
When I created a standalone version::regex class, I forgot that
the $version::LAX and $version::STRICT regex's were documented
as available (though not exported). Resolves CPAN ticket:
https://rt.cpan.org/Ticket/Display.html?id=91858
(Committer also ran porting/customized.t --regen)
Karl Williamson [Sat, 4 Jan 2014 20:35:33 +0000 (13:35 -0700)]
Merge LC_NUMERIC locale changes branch into blead
LC_NUMERIC hasn't been implemented quite the same way as the other
locale categories. And the implementation has been somewhat haphazard.
The other categories have implementations where if you're not under
locale you simply use different operations. That isn't possible with
LC_NUMERIC, as it may need libc functions that are always subject to the
current locale no matter what Perl thinks.
There are two possible implemantation paths that come to my mind to deal
with this. One is to keep correctly set the locale that the libc
routines need, and switch to the C locale during those places where it
shouldn't be used. The other way is the opposite, to keep things in the
C locale generally, and switch when needed.
Unfortunately the implementation (prior to this series of commits) used
a combination of both possibilities. I am still unsure what the
original intent was (not having spent the time to dig through the
history), or even if there was a consistent intent.
In any event, there has long been infrastructure that facilitates
switching back and forth between the current underlying locale and the C
locale. However this was not documented until now, and so it is not
surprising that people who came later (including me) did not realize
it existed, and reinvented things, inconsistently.
What I've done here is move to the first implementation path mentioned
above. I believe this is the one more likely to show up other bugs
during the remainder of the 5.19 development cycle. I have changed and
added to the infrastructure, so that it knows whether we should be in
the C or the underlying locale, and switches/restores if and only if it
is necessary. We can change to the other implementation path later
with only minimal code changes.
Karl Williamson [Sat, 21 Dec 2013 23:51:59 +0000 (16:51 -0700)]
APItest.xs: #include fakesdio.h
This causes the printf's and other stdio functions in the file to
instead be the PerlIO equivalents. We aren't trying to test libc
after all. See http://markmail.org/message/h26bq75cxlfe3y7r
Karl Williamson [Tue, 24 Dec 2013 05:03:46 +0000 (22:03 -0700)]
t/run/locale.t: White-space only
Indent because of new block introduced in the previous commit
Karl Williamson [Wed, 11 Dec 2013 23:25:02 +0000 (16:25 -0700)]
PATCH: [perl #120723] Setting LC_NUMERIC breaks parsing of constants
This is the final patch for [perl #120723], and adds tests for it.
LC_NUMERIC Locale handling was broken for code during the compilation phase,
such as BEGIN {} blocks. This is because, for some reason, perl.c set
LC_NUMERIC unconditionally back to the C locale right after locale
initialization. I suspect that was to allow the core's parsing to not be
affected by locale. However, earlier commits in this series have added code to
change/restore the locale during sections of the parsing where this might
matter, so this setting to the C locale is not needed.
Karl Williamson [Tue, 17 Dec 2013 05:40:26 +0000 (22:40 -0700)]
numeric.c: White-space only
Indent and reflow to 79 columns as a result of the previous commit's
adding a block around this code.
Karl Williamson [Thu, 12 Dec 2013 06:15:25 +0000 (23:15 -0700)]
toke.c: Set locale for all scan_num() calls; restore instead of reset
One call of Perl_scan_num changes the locale around it. However, this
function is called in several places, including from outside the file.
It is better to set the locale within scan_num() at the point where
it matters. And, instead of setting the locale unconditionally, it is
better to change it only if it needs to be changed, and restore it to
the original. Otherwise the locale can be changed to something
unexpected.
Karl Williamson [Sat, 4 Jan 2014 17:53:17 +0000 (18:53 +0100)]
vutil.c: Use existing macros instead of reinventing them
If there had been documentation referring to these macros, I would have
known they existed instead of reinventing them (not as well as the
originals).
Karl Williamson [Thu, 12 Dec 2013 06:04:40 +0000 (23:04 -0700)]
POSIX:strtod() should restore the locale it changed
Prior to this commit, the locale remained as strtod() set it to. I
could not find a case where this actually was a problem, as the other
code is good about checking for and changing the locale where needed.
But uses of atoi(), strtol() in locales where there are spaces in
numbers likely would break.
Karl Williamson [Tue, 17 Dec 2013 05:34:19 +0000 (22:34 -0700)]
Use new macros to make sure LC_NUMERIC is correctly set
This uses the macros added in the previous commit to make sure the
current LC_NUMERIC locale is correct during the operation being done;
restoring it to its prior condition afterwards. Outside of 'use locale'
the locale should be C; inside it should be the underlying default
locale. The macros handle the whole thing. In most of the places here,
the code was trying to do what the macros do more elegantly, but there
are some additional places where we set the locale correctly around an
operation that is affected by it.
Karl Williamson [Tue, 17 Dec 2013 04:47:27 +0000 (21:47 -0700)]
perl.h: Add macros and comments
These macros are used in making sure the current locale is the correct
one for the circumstances. I'm not a fan of this type of code
generation macro, but this just extends what is already there, and
aren't all that complicated.
Karl Williamson [Thu, 12 Dec 2013 05:55:43 +0000 (22:55 -0700)]
perl.h: Revise another locale setting macro
We generally don't want to switch to the default underlying locale
unless we are in the scope of some form of 'use locale'. Prior to this
commit, this code did not allow the switch for
'use locale ":not_characters"'.
Karl Williamson [Thu, 12 Dec 2013 05:50:28 +0000 (22:50 -0700)]
perl.h: Revise a locale setting macro
This macro toggles to the C locale. It should not depend on being in
the scope of 'use locale' to do that, so remove the check. I couldn't
figure out a test case for this, but I'm pretty sure there is a some
convoluted scheme that this change averts a bug from.
Karl Williamson [Thu, 12 Dec 2013 02:00:15 +0000 (19:00 -0700)]
locale.c: Avoid writing libc static storage
I don't believe this code was causing any problem, but it can overwrite
static storage returned by setlocale(). It's safer to create a copy
first.
Karl Williamson [Thu, 12 Dec 2013 01:04:47 +0000 (18:04 -0700)]
Hide some undocumented functions from perlapi
These functions should not be called from any other places than they are
now. They have been marked in the public API as undocumented. I
presume they are there because they are called from various parts of the
Perl core, so can't be static. But this suppresses them from being
listed so people won't be tempted to use them.
Karl Williamson [Wed, 11 Dec 2013 23:53:25 +0000 (16:53 -0700)]
locale.c: Add comments
This documents much of what I learned about how things work while
tracking down [perl #120723].
Karl Williamson [Fri, 13 Dec 2013 04:41:10 +0000 (21:41 -0700)]
locale.c: White-space only
Outdent code removed from a block by the previous commit
Karl Williamson [Wed, 11 Dec 2013 21:30:45 +0000 (14:30 -0700)]
locale.c: Always set state variables for a new locale
This function is called when a new underlying LC_NUMERIC locale has been
set. If that locale is the same as the current underlying one, some
setup is skipped. However, prior to this commit, more was skipped than
should have been. The reason is that even if the underlying locale is
the same, it could be that LC_NUMERIC has been toggled to the "C"
locale, and so the information could be inconsistent. By always setting
the information, we ensure consistency.
This commit ia a portion of the fix for [perl #120723]. Tests will be
added with the final commit for it.
Karl Williamson [Wed, 11 Dec 2013 23:54:49 +0000 (16:54 -0700)]
perl.h: Move some macro definitions
This places related definitions together in the file.
Karl Williamson [Sat, 4 Jan 2014 18:25:22 +0000 (19:25 +0100)]
Change preferred email for Karl Williamson in AUTHORS
Father Chrysostomos [Sat, 4 Jan 2014 18:14:47 +0000 (10:14 -0800)]
porting/customized.t --regen
John Peacock [Sat, 4 Jan 2014 15:51:55 +0000 (10:51 -0500)]
Final patch to sync with version.pm CPAN release
A last couple of test tweaks so that version.pm now passes all
tests from 5.005_04 to blead. NOTE the pure Perl version::vpp is
not default for all Perl releases prior to v5.10.
Brian Fraser [Sat, 28 Sep 2013 13:34:34 +0000 (10:34 -0300)]
ext/Devel-Peek/t/Peek.t: Don't leave PATH tainted.
The tests originally left $ENV{PATH} tainted. However, now that
the file ends up using fresh_perl_is(), $ENV{PATH} may end up
being used in some systems, like in Windows.
Brian Fraser [Fri, 27 Sep 2013 17:59:12 +0000 (14:59 -0300)]
Fixups for ext/Devel-Peek/t/Peek.t
Brian Fraser [Fri, 27 Sep 2013 17:58:49 +0000 (14:58 -0300)]
dump.c, sv_dump: Escape the name of the OUTSIDE sub
Brian Fraser [Mon, 5 Aug 2013 04:01:35 +0000 (01:01 -0300)]
sv_peek didn't add quotes before, doesn't need them now
Brian Fraser [Mon, 5 Aug 2013 03:59:50 +0000 (00:59 -0300)]
Devel::Peek: Test that we dump CvOUTSIDE properly
Brian Fraser [Sat, 23 Mar 2013 23:26:32 +0000 (20:26 -0300)]
Make dump.c nul-and-UTF8 clean
Karl Williamson [Sat, 4 Jan 2014 17:43:22 +0000 (10:43 -0700)]
vxs.inc: Move code to after declarations
This macro, added in
e1c774b6, is actual code, and needs to be
after the declarations, so that C89 compilers compile it.
Father Chrysostomos [Sat, 4 Jan 2014 14:05:41 +0000 (06:05 -0800)]
[perl #120657] Fix require PADTMP when @INC=(sub{},sub{})
It was passing a freed scalar to subsequent subs, breaking
Test::Without::Module:
sub fake_module {
my (undef,$module_file) = @_;
!1
}
unshift @INC, (\&fake_module)x2;
require "${\'whatever'}";
__END__
panic: attempt to copy freed scalar
7fe8d0829820 to
7fe8d082a0f0 at - line 3.
Obviously, doing:
SAVETMPS;
...
nsv = sv_newmortal();
...
FREETMPS; # free all tmps created since SAVETMPS
inside a loop that only assigns to nsv the first time through will
cause nsv to point to a freed scalar on subsequent iterations.
It was stupid of me to make that mistake in commit 9ffd39a to
begin with.
The extra file name SV here will simply have to last until the
require call finishes, something I was trying to avoid by putting it
after SAVETMPS.
Father Chrysostomos [Sat, 4 Jan 2014 13:15:32 +0000 (05:15 -0800)]
[Merge] [rt.cpan.org #88458] version XS routine revamp
This branch moves the version-specific XS and C functions in
universal.c and util.c into two new files, #included by the former.
This is to make it easier to keep core and CPAN in synch. Up till
now, changes made to one had to be manually applied to the other
(except that was not actually happening all the time, so they got out
of synch).
A corresponding CPAN release has yet to be made.
Father Chrysostomos [Thu, 2 Jan 2014 14:16:48 +0000 (06:16 -0800)]
porting/customized.t --regen
John Peacock [Sun, 29 Dec 2013 19:33:48 +0000 (14:33 -0500)]
Do not crash if passed garbage like array.
Somehow we lost the test that caught getting passed an arrayref
instead of a simple scalar. Also integrate fix from perl rt#120872.
John Peacock [Sun, 29 Dec 2013 18:47:11 +0000 (13:47 -0500)]
Ensure that version::_VERSION is always exported
Now that version.pm doesn't mess with the symbol table, we need
to make sure that version::_VERSION exists at all times. Also
change the name of the method that implements UNIVERSAL::VERSION
so that it is visually distinct and matches the other version.pm
derived methods.
John Peacock [Sun, 29 Dec 2013 17:26:30 +0000 (12:26 -0500)]
Apply patch from Sprout to make vxs.inc better
[Committer’s note: I already had the vxs.inc changes in my branch,
so this patch only includes the version.pm changes.]
John Peacock [Sun, 29 Dec 2013 16:49:43 +0000 (11:49 -0500)]
Integrate CPAN release of version.pm 0.9905
When adding the CPAN-distributed files for version.pm, it is necessary
to delete an entire block out of lib/version.pm, since that code is
only necessary with the CPAN release. Within core Perl, there is no
version::vxs implementation class any more.
John Peacock [Wed, 25 Dec 2013 19:19:19 +0000 (14:19 -0500)]
Grab latest changes from CPAN 0.9905
John Peacock [Mon, 9 Dec 2013 23:23:20 +0000 (18:23 -0500)]
Integrate CPAN version.pm release into core
Father Chrysostomos [Fri, 25 Oct 2013 12:57:47 +0000 (05:57 -0700)]
vxs.inc: Fix thinko
This was causing test failures after rebasing against blead.
Father Chrysostomos [Fri, 25 Oct 2013 04:54:45 +0000 (21:54 -0700)]
Update Maintainers.pl for version.pm changes
I *hope* I got it all correct. At least cmp_version.t now passes.
Father Chrysostomos [Fri, 25 Oct 2013 00:56:13 +0000 (17:56 -0700)]
Use VXS_ prefix for XSUB bodies in CPAN version
The names of the functions in core and in the CPAN version will con-
flict otherwise.
Since perl versions before 5.16.0 did not have XS_INTERNAL (which
could solve this problem another way, making the functions static),
it’s easier just to use different names.
Father Chrysostomos [Wed, 11 Sep 2013 20:19:31 +0000 (13:19 -0700)]
Integrate the rest of CPAN’s vxs.inc
Uppercase macros instead of functions (so the CPAN version can call
its own non-core functions if need be), plus a poor man’s typemap
(VTYPECHECK).
Father Chrysostomos [Wed, 11 Sep 2013 20:17:59 +0000 (13:17 -0700)]
vxs.inc: Disallow multiple args to XS_version_normal
Also rename the argument.
This is part of bringing perl and CPAN into synch.
Father Chrysostomos [Wed, 11 Sep 2013 20:10:15 +0000 (13:10 -0700)]
[rt.cpan.org #88495] bad string comparison in version->qv
qv is affected, too. A package called "ver" inheriting from version
should be able to create "ver" objects via ->qv.
Father Chrysostomos [Wed, 11 Sep 2013 19:51:44 +0000 (12:51 -0700)]
vxs.inc: Integrate the CPAN version of version_new
No behaviour changes; just rearranged, and with a few extra #ifdefs.
Father Chrysostomos [Wed, 11 Sep 2013 16:03:14 +0000 (09:03 -0700)]
[rt.cpan.org #88495] version->new str cmp bug
We shouldn’t consider ver and version to be the same class.
If ver inherits from version, ver->new should give a ver object.
This string comparison bug has only ever existed in the perl core
version of the version routines. It was
ed1db70e1224 in 5.16 that
introduced it.
Father Chrysostomos [Wed, 11 Sep 2013 07:23:07 +0000 (00:23 -0700)]
vxs.inc: Import UNIVERSAL::VERSION from CPAN
No functional changes, just cosmetic (and it works with older
perls, too).
This is part of bringing perl and CPAN into synch.
Father Chrysostomos [Wed, 11 Sep 2013 16:01:39 +0000 (09:01 -0700)]
universal.c: include vutil.h
Subsequent changes to vxs.inc will require it.
Father Chrysostomos [Wed, 11 Sep 2013 06:46:47 +0000 (23:46 -0700)]
vxs.inc: arg list checking for UNIVERSAL::VERSION
This brings it in line with the CPAN implementation. It’s hard to
test this, as the tests should go in cpan/version, but the pure-Perl
implementation doesn’t check the number of arguments.
Father Chrysostomos [Wed, 11 Sep 2013 05:12:45 +0000 (22:12 -0700)]
vxs.inc: Add dVAR define for CPAN use
This is part of bringing perl and CPAN into synch.
Father Chrysostomos [Wed, 11 Sep 2013 05:11:30 +0000 (22:11 -0700)]
vxs.inc: Don’t hard-code class name
This is part of bringing perl and CPAN into synch.
Father Chrysostomos [Tue, 10 Sep 2013 07:33:19 +0000 (00:33 -0700)]
vutil.c: Add preproc code specific to CPAN
The purpose is to bring the files into synch so that later version.pm
upgrades involve dropping files into place.
This requires changing vutil.h a bit to work in the core.
Father Chrysostomos [Wed, 11 Sep 2013 03:39:32 +0000 (20:39 -0700)]
Import vutil.h from the CPAN version dist
This will be needed when we switch vutil.c over to using macros for
version functions, the way the CPAN dist does it.
Father Chrysostomos [Tue, 10 Sep 2013 07:14:59 +0000 (00:14 -0700)]
Extract version routines into two new files
This is to make synchronisation between the CPAN distribution and the
perl core easier.
The files have different extensions to match what the CPAN distribu-
tion will have. vutil.c is a separate compilation unit that the CPAN
dist already has. vxs.inc will be included by vxs.xs (vxs.c is obvi-
ously alreday taken, being generated from vxs.xs).
In the perl core util.c includes vutil.c and universal.c
includes vxs.inc.
Chris 'BinGOs' Williams [Sat, 4 Jan 2014 12:24:00 +0000 (12:24 +0000)]
Update ExtUtils-MakeMaker to CPAN version 6.86
[DELTA]
6.86 Sat Jan 4 12:17:53 GMT 2014
No changes from 6.85_07
6.85_07 Wed Jan 1 18:55:22 GMT 2014
Bug fixes:
* Expanded test coverage for metafiles
Doc fixes:
* Documentation expanded to mention JSON metafiles
6.85_06 Mon Dec 30 23:14:37 GMT 2013
Bug fixes:
* Explicitly require dynaloader before using mod2fname
6.85_05 Sun Dec 29 11:25:00 GMT 2013
Bug fixes:
* Export 'configure' section of prereqs when meta-spec version 2
Doc fixes:
* Document BUILD_REQUIRES defaults
6.85_04 Mon Dec 23 15:00:14 GMT 2013
No changes since v6.85_03 fixing repo tags
6.85_03 Mon Dec 23 14:55:37 GMT 2013
Bug fixes:
* RT#91540 PREREQ_FATAL not recognised on command line
6.85_02 Tue Dec 17 10:13:28 GMT 2013
New features:
* Added PPM_UNINSTALL_EXEC and PPM_UNINSTALL_SCRIPT options
to PPD generation
6.85_01 Mon Dec 16 13:15:43 GMT 2013
Bug Fixes:
* harden xsubpp locating loop in MM_Unix
Chris 'BinGOs' Williams [Sat, 4 Jan 2014 10:31:51 +0000 (10:31 +0000)]
Update Module-Load to CPAN version 0.28
[DELTA]
0.28 Sat Jan 4 11:07:27 GMT 2014
* Fix 'Prototype after' warnings
0.26 Sat Jan 4 10:08:35 GMT 2014
* New functions added (reisub)
* Documented by magnolia
Brian Fraser [Sat, 4 Jan 2014 03:03:35 +0000 (00:03 -0300)]
perldelta for d_libname_unique
Brian Fraser [Wed, 27 Nov 2013 16:25:25 +0000 (13:25 -0300)]
Teach ExtUtils::CBuilder to handle mod2fname properly
Brian Fraser [Wed, 20 Nov 2013 05:37:33 +0000 (02:37 -0300)]
Configure: Introduce d_libname_unique
Brian Fraser [Wed, 15 May 2013 11:52:18 +0000 (08:52 -0300)]
DynaLoader: Introduce d_libname_unique
Android's linker has some unusual behavior, in that it only uses
the basename of a library in its cache. That means that, as far as
dlopen() is concerned, the libraries for Hash::Util and List::Util,
both of which are called Util.so, are the same.
This commit teaches DynaLoader about d_libname_unique. When
defined, it signals DynaLoader define a mod2fname sub that renames
the .so files to something "unique" -- so for example,
Hash/Util/Util.so becomes Hash/Util/PL_Hash__Util.so.
Karl Williamson [Fri, 3 Jan 2014 16:17:14 +0000 (09:17 -0700)]
porting/diag.t: Add comments
Karl Williamson [Fri, 3 Jan 2014 15:00:32 +0000 (08:00 -0700)]
perldiag.pod: Correct some categories
The warning categories were wrong in a few places here. diag.t had them
as to ignore. By correcting them in the pod, they can be removed from
the ignore list.
This commit additionally adds text for a few messages that can be either
fatal or just warnings.
Steve Hay [Fri, 3 Jan 2014 08:48:20 +0000 (08:48 +0000)]
Upgrade Encode from version 2.56 to 2.57
Father Chrysostomos [Thu, 2 Jan 2014 14:27:24 +0000 (06:27 -0800)]
perldiag: Rewrap an entry slightly
for better splain output
Karl Williamson [Thu, 2 Jan 2014 03:08:02 +0000 (20:08 -0700)]
Change some warnings in utf8n_to_uvchr()
This bottom level function decodes the first character of a UTF-8 string
into a code point. It is discouraged from using it directly. This
commit cleans up some of the warnings it can raise. Now, tests for
malformations are done before any tests for other potential issues. One
of those issues involves code points so large that they have never
appeared in any official standard (the current standard has scaled back
the highest acceptable code point from earlier versions). It is
possible (though not done in CPAN) to warn and/or forbid these code
points, while accepting smaller code points that are still above the
legal Unicode maximum. The warning message for this now includes the
code point if representable on the machine. Previously it always
displayed raw bytes, which is what it still does for non-representable
code points.
Ricardo Signes [Thu, 2 Jan 2014 00:21:43 +0000 (19:21 -0500)]
do not have perlbug talk about perlthanks
Ricardo Signes [Wed, 1 Jan 2014 23:20:21 +0000 (18:20 -0500)]
remove the claim that perlthanks gets an autoreply
Karl Williamson [Wed, 1 Jan 2014 05:41:39 +0000 (22:41 -0700)]
numeric.c: Use macros instead of strchr()
This replaces uses of strchr() (and hence its loop) with a simple array
lookup, mask, and test. This causes an extra test to be needed later in
the hex decoding case to get the hex value, instead of a subtract
previously. However these two tests are fewer than the average number
in strchr().
Karl Williamson [Wed, 1 Jan 2014 05:35:46 +0000 (22:35 -0700)]
handy.h: Add two macros
handy.h contains a macro that reads a hex digit and returns its value,
with fewer branches than a naive implementation would use. This commit
just copies and modifies it to create two macros for
1) just converting the hex value, without advancing the input; and
2) doing the same for an octal value.
Karl Williamson [Wed, 1 Jan 2014 05:19:45 +0000 (22:19 -0700)]
handy.h: Add debugging assertion
This macro requires the input to be a hex digit, without testing. It is
prudent to assert that under DEBUGGING.
Karl Williamson [Wed, 1 Jan 2014 05:13:06 +0000 (22:13 -0700)]
Move a macro from utf8.h to handy.h for wider use.
Future commits will want this available outside utf8.h
Karl Williamson [Wed, 1 Jan 2014 04:57:53 +0000 (21:57 -0700)]
regen/warnings.pl: Add comments
These note that warnings categories should be independent in the calls
to ckWARN() and packWARN() type macros.
Karl Williamson [Wed, 1 Jan 2014 05:05:45 +0000 (22:05 -0700)]
ext/XS-APItest/t/utf8.t: White-space only
Indent and reflow to fit into 79 columns due to a new enclosing block in
the previous commit
Karl Williamson [Wed, 1 Jan 2014 04:45:54 +0000 (21:45 -0700)]
utf8.c: Fix warning category and subcategory conflicts
The warnings categories non_unicode, nonchar, and surrogate are all
subcategories of 'utf8'. One should never call a packWARN() with both a
category and a subcategory of it, as it will mean that one can't
completely make the subcategory independent. For example,
use warnings 'utf8';
no warnings 'surrogate';
surrogate warnings will be output if they are tested with a
ckWARN2(WARN_UTF8, WARN_SURROGATE);
utf8.c was guilty of this.
Karl Williamson [Wed, 1 Jan 2014 04:41:09 +0000 (21:41 -0700)]
utf8.c: Don't do redundant test
The test here for WARN_UTF8 is redundant, as only if one of the other
three warning categories is enabled will anything actually be output.
Karl Williamson [Wed, 1 Jan 2014 04:37:52 +0000 (21:37 -0700)]
utf8.c: Typo in comment, and clarification
Karl Williamson [Tue, 31 Dec 2013 19:30:35 +0000 (12:30 -0700)]
Unicode::UCD::prop_aliases(): Don't generate spurious warnings
Certain inputs to prop_aliases caused spurious warning.
Karl Williamson [Wed, 1 Jan 2014 19:58:05 +0000 (12:58 -0700)]
t/test.pl: Reword comment
There was a typo in this comment, but looking at it closely made me
realize that I didn't really understand it. This clarifies it.
Dominic Hargreaves [Wed, 1 Jan 2014 19:45:35 +0000 (19:45 +0000)]
perl5180delta: typos
Karl Williamson [Wed, 1 Jan 2014 18:36:17 +0000 (11:36 -0700)]
regexec.c: Clarify comment
Karl Williamson [Wed, 1 Jan 2014 16:59:20 +0000 (09:59 -0700)]
regexec.c: Guard against malformed UTF-8 in [...]
The code that handles bracketed character classes assumed that the
string being matched against did not have the too-short malformation;
this could lead to reading beyond-the-end-of-buffer. (It did check for
other malformations.) This is solved by changing the function that
operates on bracketed character classes to take and use an extra
parameter, the actaul buffer end.
Karl Williamson [Wed, 1 Jan 2014 16:52:55 +0000 (09:52 -0700)]
pp.c: Remove unnecessary mask operation.
An unsigned character (U8) should not have more than 8 bits of data, so
no need to force that by masking with 0xFF.
Karl Williamson [Wed, 1 Jan 2014 16:49:04 +0000 (09:49 -0700)]
pp.c: Guard against malformed UTF-8 input in ord()
This code got the actual length of the input scalar, but discarded it.
If that scalar contains malformed UTF-8 that has fewer bytes than is
indicated, a read beyond-buffer-end could happen. Simply use the actual
length.
H.Merijn Brand [Wed, 1 Jan 2014 17:32:50 +0000 (18:32 +0100)]
Regenerated Configure after backports
Father Chrysostomos [Wed, 1 Jan 2014 14:06:30 +0000 (06:06 -0800)]
pp.c: Simplify lc and uc stringification code
Originally, lc and uc would not warn about undef, due to an implemen-
tation detail.
The implementation changed in
673061948, and extra code was added to
keep the behaviour the same.
Commit
0a0ffbced enabled the warnings about undef, but did so by added
even more code in the midst of the blocks that existed solely to avoid
the warning.
We can just delete those blocks and put in a simple stringification.
Father Chrysostomos [Wed, 1 Jan 2014 13:56:15 +0000 (05:56 -0800)]
pp.c: Improve self-referential comment
pp.c:pp_lc has this:
/* Here is where we would do context-sensitive actions. See the
* commit message for this comment for why there isn't any */
If I try to look up the commit that added the comment, I get this:
commit
06b5486afd6f58eb7fdf8c5c8cdb8520a4c87f40
Author: Karl Williamson <public@khwilliamson.com>
Date: Fri Nov 11 10:13:28 2011 -0700
pp.c: White-space only
This outdents and reflows comments as a result of the removal of a
surrounding block
86510fb15 was the commit that added the comment, whose commit message
contains the explanation, so cite that directly.
Father Chrysostomos [Wed, 1 Jan 2014 13:51:36 +0000 (05:51 -0800)]
Reënable in-place lc/uc
It used to be that this code:
for("$foo") {
lc $_;
...
}
would modify $_, allowing other code in the ‘for’ block to see the
changes (bug #43207). Commit
17fa077605 fixed that by changing the
logic that determined whether lc/uc(first) could modify the sca-
lar in place.
In doing so, it stopped in-place modification from happening at all,
because the condition became SvPADTMP && SvTEMP, which never happens.
(SvPADTMP unually indicates an operator return value stored in a pad;
i.e., a scalar that will next be used by the same operator again to
return another value. SvTEMP indicates that the REFCNT will go down
shortly, usually a temporary value created solely for the sake of
returning something.)
Now that bug #78194 is fixed, for("$foo") no longer exposes a PADTMP
to the following code, so we *can* now assume (as was done erroneously
before) that PADTMP indicates something like lc("$foo$bar") and modify
pp_stringify’s return value in place.
Also, we can extend this to apply to TEMP variables that have a ref-
erence count of 1, since they cannot be in use elsewhere. We skip
TEMP variables with set-magic, because they could be tied, and
SvSETMAGIC would have a side effect. (That could happen with
lc(delete $h{tied_elem}).)
Previously, this was skipped for uc and lc for overloaded references,
since stringification could change the utf8ness. That is no longer
sufficient. As of Perl 5.16, typeglobs and non-overloaded blessed
references can also enable their utf8 flag upon stringification, if
the stash or glob names contains wide characters. So I changed the
!SvAMAGIC (not overloaded) to SvPOK (is a string already), which will
cover most cases where this optimisation helps. The two tests added
to the end of lc.t fail with !SvAMAGIC.
Father Chrysostomos [Tue, 31 Dec 2013 05:29:49 +0000 (21:29 -0800)]
lc.t: More tests for #43207