perl.git
6 weeks agoXXX delta: I18N-Langinfo: Use new fcn Perl_langinfo() smoke-me/khw-locale
Karl Williamson [Thu, 7 Sep 2017 22:33:09 +0000 (16:33 -0600)] 
XXX delta: I18N-Langinfo: Use new fcn Perl_langinfo()

This automatically fixes the bug where it always returned a dot for the
decimal point character.

6 weeks agoXXX delta: Add API function Perl_langinfo()
Karl Williamson [Thu, 7 Sep 2017 21:21:56 +0000 (15:21 -0600)] 
XXX delta: Add API function Perl_langinfo()

This is designed to generally replace nl_langinfo() in XS code.  It is
thread-safer, hides the quirks of perl's LC_NUMERIC handling, and can be
used on systems lacking nl_langinfo.

6 weeks agoTeach podcheck about strftime() and localeconv() man pages
Karl Williamson [Thu, 7 Sep 2017 23:17:22 +0000 (17:17 -0600)] 
Teach podcheck about strftime() and localeconv() man pages

6 weeks agoI18N-Langinfo/t/Langinfo.t: Reinstate tests, modernize
Karl Williamson [Thu, 7 Sep 2017 22:25:33 +0000 (16:25 -0600)] 
I18N-Langinfo/t/Langinfo.t: Reinstate tests, modernize

The comments say that a bunch of tests were disabled due to the poor
support of nl_langinfo() at the time, 2001.  I haven't seen these issues
lately, and so am reinstating many of the tests, using the modern
Test::More that the rest of the file in the meantime had been updated to
use.  The tests that weren't reinstated were because results for them
may vary by platform.

6 weeks agoautodoc.pl: Add =encoding line
Karl Williamson [Thu, 7 Sep 2017 22:56:15 +0000 (16:56 -0600)] 
autodoc.pl: Add =encoding line

This is so can have non-ASCII in perlapi

6 weeks agosimplify s///eee lexing logic
Lukas Mai [Fri, 8 Sep 2017 09:21:58 +0000 (11:21 +0200)] 
simplify s///eee lexing logic

6 weeks agoUse reentrant functions on Darwin
Karl Williamson [Thu, 7 Sep 2017 16:51:50 +0000 (10:51 -0600)] 
Use reentrant functions on Darwin

Darwin does have reentrant functions, like asctime_r, and so enable
their automatic use of all the ones available.  Tony Cook speculated the
failure to use these may be behind some unexplained problems on Darwin.
Netware is still disabled; the commit that did that did not specify why.

It would be good if someone could come with a test that fails (with some
regularity) until this patch is applied.

This supercedes:

commit 4f8ddd771cda27533f4680b572d765b063e03e11
Author: Artur Bergman <sky@nanisky.com>
Date:   Tue Feb 5 10:30:58 2002 +0000

    Enable building with threads under macosx, assume __APPLE__ means darwin and disable _r functions, since we don't have them.

6 weeks agoperldelta for f8ac814f18bf, 8c573bee8897, f3d6edb2a15d
Tony Cook [Tue, 5 Sep 2017 00:56:47 +0000 (10:56 +1000)] 
perldelta for f8ac814f18bf8c573bee8897f3d6edb2a15d

6 weeks agoAdd unit test t/op/stash_parse_gv.t
Nicolas R [Fri, 1 Sep 2017 19:32:43 +0000 (13:32 -0600)] 
Add unit test t/op/stash_parse_gv.t

This test add coverage for long function names
in order to increase test coverage for
S_parse_gv_stash_name function.

6 weeks agoadd a small buffer to gv_stash_name
Nicolas R [Thu, 27 Apr 2017 17:29:48 +0000 (11:29 -0600)] 
add a small buffer to gv_stash_name

6 weeks agoReduce malloc&free for S_parse_gv_stash_name
Nicolas R [Mon, 31 Oct 2016 15:55:05 +0000 (09:55 -0600)] 
Reduce malloc&free for S_parse_gv_stash_name

S_parse_gv_stash_name was using multiple malloc
and free when using ' as package separator.
We can malloc & free only once the tmpbuffer as we know the size max.
This is also sligthly improving iterations when using ::
as we do not need to check if we need to free the tmp buffer.

This is also saving an extra '*gv && *gv != (const GV *)&PL_sv_undef' check.

6 weeks agothreads.xs: don't Copy() null pointer
David Mitchell [Mon, 4 Sep 2017 08:54:58 +0000 (09:54 +0100)] 
threads.xs: don't Copy() null pointer

If a thread is created with no parameters, e.g.

    use threads;
    threads->new(sub {})->join;

Then it tries to Copy() zero parameters to AvARRAY(params), which is null.
Since v5.27.3-31-gf14cf36, this triggers an assert failure, so threaded
builds have been badly broken.

6 weeks agoStrengthen weak refs when sorting in-place
Dagfinn Ilmari Mannsåker [Wed, 30 Aug 2017 21:35:17 +0000 (22:35 +0100)] 
Strengthen weak refs when sorting in-place

It's conceptually an assignment, which should strengthen any weak refs.

Reported-by: Tom Molesworth <team@cpan.org>
6 weeks agoAdd new API function sv_rvunweaken
Dagfinn Ilmari Mannsåker [Wed, 30 Aug 2017 21:33:45 +0000 (22:33 +0100)] 
Add new API function sv_rvunweaken

Needed to fix in-place sort of weak references in a future commit.

Stolen from Scalar::Util::unweaken, which will be made to use this
when available via CPAN upstream.

6 weeks agoperldelta for f14cf3632059
Tony Cook [Mon, 4 Sep 2017 05:07:42 +0000 (15:07 +1000)] 
perldelta for f14cf3632059

6 weeks ago(perl #131746) avoid undefined behaviour in Copy() etc
Tony Cook [Mon, 14 Aug 2017 01:52:39 +0000 (11:52 +1000)] 
(perl #131746) avoid undefined behaviour in Copy() etc

These functions depend on C library functions which have undefined
behaviour when passed NULL pointers, even when passed a zero 'n' value.

Some compilers use this information, ie. assume the pointers are
non-NULL when optimizing any following code, so we do need to
prevent such unguarded calls.

My initial thought was to add conditionals to each macro to skip the
call to the library function when n is zero, but this adds a cost to
every use of these macros, even when the n value is always true.

So instead I added asserts() which will give us a much more visible
indicator of such broken code and revealed the pp_caller and Glob.xs
issues also patched here.

7 weeks agoperldelta for cfbdacd3fe15
Tony Cook [Thu, 31 Aug 2017 04:41:38 +0000 (14:41 +1000)] 
perldelta for cfbdacd3fe15

7 weeks agoadd a stack extend check to pp_entersub for XS subs
Tony Cook [Thu, 31 Aug 2017 04:33:17 +0000 (14:33 +1000)] 
add a stack extend check to pp_entersub for XS subs

This allows us to report the XSUB involved by name (or at least by
filename if it's anonymous) in the likely case that it was an XSUB
that failed to extend the stack.

7 weeks agoperldelta for 745e740c825d
Tony Cook [Thu, 31 Aug 2017 00:29:36 +0000 (10:29 +1000)] 
perldelta for 745e740c825d

and remove an obsolete comment, oops.

7 weeks ago(perl #128263) handle PL_last_in_gv being &PL_sv_undef
Tony Cook [Thu, 31 Aug 2017 00:05:54 +0000 (10:05 +1000)] 
(perl #128263) handle PL_last_in_gv being &PL_sv_undef

rv2gv will return &PL_sv_undef when it can't get a GV, previously
this could cause an assertion failure in mg.c

My original fix for this changed each op that deals with GVs for I/O
to set PL_last_in_gv to NULL if there was no io object in the GV, but
this changes other behaviour as noted by FatherC.

Also partly reverts 84ee769f, which unnecessarily did the same for
readline(), so now we're consistent.

7 weeks agoDrop VMS::stdio compatibility shim
Neil Bowers [Tue, 29 Aug 2017 22:45:41 +0000 (23:45 +0100)] 
Drop VMS::stdio compatibility shim

7 weeks agoperldelta for 1141a2c75717
Tony Cook [Wed, 30 Aug 2017 23:50:41 +0000 (09:50 +1000)] 
perldelta for 1141a2c75717

7 weeks ago(perl #131949) adjust s in case peekspace() moves the line string
Tony Cook [Thu, 24 Aug 2017 04:38:41 +0000 (14:38 +1000)] 
(perl #131949) adjust s in case peekspace() moves the line string

7 weeks agofix typo in comment
Lukas Mai [Tue, 29 Aug 2017 18:57:52 +0000 (20:57 +0200)] 
fix typo in comment

7 weeks agoFix META_MERGE in Module-CoreList Makefile.PL
Chris 'BinGOs' Williams [Tue, 29 Aug 2017 13:46:25 +0000 (14:46 +0100)] 
Fix META_MERGE in Module-CoreList Makefile.PL

7 weeks ago[perl #131883] Include pkg in :prototype warnings
Father Chrysostomos [Mon, 28 Aug 2017 05:19:24 +0000 (22:19 -0700)] 
[perl #131883] Include pkg in :prototype warnings

The subref-in-stash optimisation was causing the package name to be
dropped in prototype warnings triggered by the :prototype() attribute
syntax, since the GV containing the stash name and the sub name did
not exist because of the optimisation.

Commit 2eaf799e, which introduced said optimisation, simply did not
include the package name in validate_proto’s ‘name’ parameter, but
just the sub name.  This commit makes it tell validate_proto to use
the current stash name.

7 weeks agoAdd another param to validate_proto
Father Chrysostomos [Mon, 28 Aug 2017 04:48:42 +0000 (21:48 -0700)] 
Add another param to validate_proto

I need this in order to fix bug #131883.  Since it has a bit of
churn, I’m putting it in a separate commit.

7 weeks agoTest ‘Missing ']' in prototype’ warning
Father Chrysostomos [Sun, 27 Aug 2017 18:42:50 +0000 (11:42 -0700)] 
Test ‘Missing ']' in prototype’ warning

7 weeks agoperldelta for 3b8804a4c232
Tony Cook [Mon, 28 Aug 2017 06:33:18 +0000 (16:33 +1000)] 
perldelta for 3b8804a4c232

7 weeks ago(perl #131836) avoid a use-after-free after parsing a "sub" keyword
Tony Cook [Mon, 7 Aug 2017 01:27:50 +0000 (11:27 +1000)] 
(perl #131836) avoid a use-after-free after parsing a "sub" keyword

The:

  d = skipspace(d);

can reallocate linestr in the test case, invalidating s.  This would
end up in PL_bufptr from the embedded (PL_bufptr = s) in the TOKEN()
macro.

Assigning s to PL_bufptr and restoring s from PL_bufptr allows
lex_next_chunk() to adjust the pointer to the reallocated buffer.

8 weeks ago5.26.1 has slipped to September; 5.24.3 will be soon after it
Steve Hay [Fri, 25 Aug 2017 07:19:31 +0000 (08:19 +0100)] 
5.26.1 has slipped to September; 5.24.3 will be soon after it

8 weeks agoperlfunc.pod grammar fix: A -> An
Dominic Hargreaves [Wed, 23 Aug 2017 11:16:46 +0000 (12:16 +0100)] 
perlfunc.pod grammar fix: A -> An

Originally reported by Dan Jacobson at
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872777>

8 weeks agomake 'struct jmpenv' size independent of DEBUGGING
David Mitchell [Wed, 23 Aug 2017 09:18:53 +0000 (10:18 +0100)] 
make 'struct jmpenv' size independent of DEBUGGING

RT #131942

My commit v5.27.1-114-g9449f0d added a field je_old_stack_hwm to
the jmpenv structure on debugging builds.

However, one field in the interpreter structure is a JMPENV (rather than
JMPENV*), so this can make the interpreter structure size vary on
debugging and non-debugging builds.

This is usually a no-no, since it breaks re.pm, which recompiles
the various re functions with DEBUGGING enabled, even on non-debugging
fields.

This was supposed to be handled by the extra '!defined DEBUGGING_RE_ONLY'
condition, and indeed all core XS modules including re.xs work ok.

However, it seems to have broken several CPAN modules. I still don't
understand why, but the easiest fix is to just always include the
debugging je_old_stack_hwm field in all builds.

2 months agoI am a mole in a hole
Chris 'BinGOs' Williams [Tue, 22 Aug 2017 10:17:33 +0000 (11:17 +0100)] 
I am a mole in a hole

2 months agosort perldiag
Father Chrysostomos [Mon, 21 Aug 2017 21:52:47 +0000 (14:52 -0700)] 
sort perldiag

2 months agoperldiag: Correct diag names
Father Chrysostomos [Mon, 21 Aug 2017 21:47:37 +0000 (14:47 -0700)] 
perldiag: Correct diag names

to get diag.t passing.

2 months agoSprinkle diag_listed_as; perldiag tweaks
Father Chrysostomos [Mon, 21 Aug 2017 21:43:16 +0000 (14:43 -0700)] 
Sprinkle diag_listed_as; perldiag tweaks

Trying to get tests passing after making diag.t smarter....

2 months agodiag.t needs to know that yywarn implies WARN_SYNTAX
Father Chrysostomos [Mon, 21 Aug 2017 21:33:14 +0000 (14:33 -0700)] 
diag.t needs to know that yywarn implies WARN_SYNTAX

because yywarn calls yyerror with PL_in_eval containing the EVAL_WARNONLY
flag, and yyerror calls Perl_ck_warner_d(aTHX_ packWARN(WARN_SYNTAX),...)
when that flag is set.

2 months agoperldiag: Tweaks
Father Chrysostomos [Mon, 21 Aug 2017 21:22:29 +0000 (14:22 -0700)] 
perldiag: Tweaks

Rewrap for better splain output, and tweak the wording in places.

2 months agoTeach diag.t about Perl_form
Father Chrysostomos [Mon, 21 Aug 2017 20:53:42 +0000 (13:53 -0700)] 
Teach diag.t about Perl_form

Some of the error-producing functions are called with Perl_form(...) as
the first argument.  diag.t did not know about this, and was missing
many cases.

2 months agoMove illegalproto warnings to t/lib/warning/toke
Father Chrysostomos [Mon, 21 Aug 2017 20:52:35 +0000 (13:52 -0700)] 
Move illegalproto warnings to t/lib/warning/toke

The code that produces the warnings is in toke.c, after all.

2 months agoAdd SORTf_UNSTABLE flag
Father Chrysostomos [Sun, 6 Aug 2017 18:38:28 +0000 (11:38 -0700)] 
Add SORTf_UNSTABLE flag

This will allow a future commit to make mergesort unstable when
the user specifies ‘no sort stable’, since it has been decided
that mergesort should remain stable by default.

This bit is not yet used, but is quite harmless.

2 months agoBump perl version to 5.27.4, including Module::CoreList bits
Matthew Horsfall [Mon, 21 Aug 2017 21:10:10 +0000 (17:10 -0400)] 
Bump perl version to 5.27.4, including Module::CoreList bits

2 months agoAdd new perldelta for 5.27.4
Matthew Horsfall [Mon, 21 Aug 2017 21:00:39 +0000 (17:00 -0400)] 
Add new perldelta for 5.27.4

2 months agoTick 5.27.3 off the list
Matthew Horsfall [Mon, 21 Aug 2017 20:54:25 +0000 (16:54 -0400)] 
Tick 5.27.3 off the list

2 months agoUpdate epigraphs.pod for 5.27.3 release
Matthew Horsfall [Mon, 21 Aug 2017 20:53:53 +0000 (16:53 -0400)] 
Update epigraphs.pod for 5.27.3 release

2 months agoUpdate perlhist.pod for new release v5.27.3
Matthew Horsfall [Mon, 21 Aug 2017 20:00:38 +0000 (16:00 -0400)] 
Update perlhist.pod for new release

2 months agoFinalize perldelta
Matthew Horsfall [Mon, 21 Aug 2017 19:56:49 +0000 (15:56 -0400)] 
Finalize perldelta

2 months agoUpdate Module::CoreList %released for 5.27.3
Matthew Horsfall [Mon, 21 Aug 2017 19:51:02 +0000 (15:51 -0400)] 
Update Module::CoreList %released for 5.27.3

2 months agoUpdate Module::CoreList for release
Matthew Horsfall [Mon, 21 Aug 2017 19:49:50 +0000 (15:49 -0400)] 
Update Module::CoreList for release

2 months agoBump Module::CoreList version
Matthew Horsfall [Mon, 21 Aug 2017 19:48:02 +0000 (15:48 -0400)] 
Bump Module::CoreList version

2 months agoUpdate INSTALL for 5.27.3
Matthew Horsfall [Mon, 21 Aug 2017 19:28:23 +0000 (15:28 -0400)] 
Update INSTALL for 5.27.3

2 months agoPrep perldetla for release
Matthew Horsfall [Mon, 21 Aug 2017 19:26:27 +0000 (15:26 -0400)] 
Prep perldetla for release

2 months agoNote B::Debug deprecation in perldelta and Porting/Maintainers.pl
Dagfinn Ilmari Mannsåker [Mon, 21 Aug 2017 14:58:32 +0000 (15:58 +0100)] 
Note B::Debug deprecation in perldelta and Porting/Maintainers.pl

2 months agoperldelta for 5997475bc5
Dagfinn Ilmari Mannsåker [Mon, 21 Aug 2017 09:16:39 +0000 (10:16 +0100)] 
perldelta for 5997475bc5

2 months agomake-rmg-checklist - Be more helpful about file open/close errors
Matthew Horsfall [Sun, 20 Aug 2017 23:28:29 +0000 (19:28 -0400)] 
make-rmg-checklist - Be more helpful about file open/close errors

2 months agoperlop: fix documentation for s/// "false" return value
Lukas Mai [Sun, 20 Aug 2017 19:12:17 +0000 (21:12 +0200)] 
perlop: fix documentation for s/// "false" return value

Commit a0d0e21ea6ea90a2231 ("perl-5.000") added perlop.pod, where s///
was described as returning 0 if no substitutions were made.

commit e37d713d85ec003d03d ("perl 5.003_01: pod/perlop.pod") then
"fixed" the documentation by saying it returns the empty string instead.
And that's how it's been since 1996.

What s/// actually returns on match failure is the canonical false
value, which is both "" and 0 at the same time (depending on
numeric/string context).

2 months agodocument fileno(DIRHANDLE)
Zefram [Sat, 19 Aug 2017 04:02:55 +0000 (05:02 +0100)] 
document fileno(DIRHANDLE)

This has been supported since commit
67f2cc757fdda0bee562f2f5899884d09ca382ef in Perl 5.21.7.

2 months agoadd sv_string_from_errnum()
Zefram [Sun, 13 Aug 2017 00:59:43 +0000 (01:59 +0100)] 
add sv_string_from_errnum()

This is a new API function, partly substituting for the my_strerror()
that was recently removed from the public API, but also incorporating
the decoding work that's done for $!.

2 months agoImprove heuristic for UTF-8 detection in "$!"
Karl Williamson [Fri, 18 Aug 2017 19:46:25 +0000 (13:46 -0600)] 
Improve heuristic for UTF-8 detection in "$!"

Previously, the stringification of "$!" was considered to be UTF-8 if it
had any characters with the high bit set, and everything was
syntactically legal UTF-8.  This may to correctly guess on short strings
where there are only a few non-ASCII bytes.  This could happen in
languages based on the Latin script where many words don't use
non-ASCII.

This commit adds a check that the locale is a UTF-8 one.  That check is
a call to an already-existing subroutine which goes to some lengths to
get an accurate answer, and should be essentially completely reliable on
modern systems that have nl_langinfo() and/or mbtowc().

See the thread starting at
http://nntp.perl.org/group/perl.perl5.porters/245902

2 months agodocument dirhandles vs filehandles
Zefram [Fri, 18 Aug 2017 10:07:48 +0000 (11:07 +0100)] 
document dirhandles vs filehandles

The statement that they are in separate namespaces was never really true.
Since the recent commit 489c16bfa14d460701bd76a4a4f0658f1200509a a
single I/O object can no longer be opened both ways at once, so the old
statement is now totally false.  Replace it with something describing
the new situation.

2 months agoAdd -Werror=pointer-arith by default
Dagfinn Ilmari Mannsåker [Tue, 8 Aug 2017 10:41:08 +0000 (11:41 +0100)] 
Add -Werror=pointer-arith by default

The core is already clean for this.

2 months agoUpdate perlhacktips about default gcc warning flags
Dagfinn Ilmari Mannsåker [Tue, 8 Aug 2017 10:40:25 +0000 (11:40 +0100)] 
Update perlhacktips about default gcc warning flags

2 months agoS_opdump_indent(): avoid shift overflow
David Mitchell [Thu, 17 Aug 2017 07:25:50 +0000 (08:25 +0100)] 
S_opdump_indent(): avoid shift overflow

RT #131912

the (1 << i) is harmless for large i, but triggers an 'undefined-behavior'
errror in clang.

So work around it.

2 months ago(perl #131793) sanely handle PL_linestart > PL_bufptr
Tony Cook [Wed, 26 Jul 2017 02:04:18 +0000 (12:04 +1000)] 
(perl #131793) sanely handle PL_linestart > PL_bufptr

In the test case, scan_ident() ends up fetching another line
(updating PL_linestart), and since in this case we don't
successfully parse ${identifier} s (and PL_bufptr) end up being
before PL_linestart.

2 months agoFix "floating pointer" typo in perldelta
Dagfinn Ilmari Mannsåker [Mon, 14 Aug 2017 09:52:12 +0000 (10:52 +0100)] 
Fix "floating pointer" typo in perldelta

2 months agoperldelta for 3cb4cde3dd4d
Tony Cook [Mon, 14 Aug 2017 06:31:24 +0000 (16:31 +1000)] 
perldelta for 3cb4cde3dd4d

2 months ago(perl #124368) make /foo/o; /$null/ act consistently
Tony Cook [Tue, 4 Jul 2017 01:44:06 +0000 (11:44 +1000)] 
(perl #124368) make /foo/o; /$null/ act consistently

Previously the /o would be inherited by the second match if the first
match was successful, but only on non-threaded builds.

The op-tree rewriting done on non-threaded builds could also confuse
the interpreter, possibly resulting in the match op receiving
the argument intended for the regcomp op.

2 months agoperldelta for adb0f5c46e10
Tony Cook [Mon, 14 Aug 2017 05:58:26 +0000 (15:58 +1000)] 
perldelta for adb0f5c46e10

2 months ago(perl #131725) ignore the exponent on a decimal float if no digits
Tony Cook [Thu, 3 Aug 2017 02:11:56 +0000 (12:11 +1000)] 
(perl #131725) ignore the exponent on a decimal float if no digits

Previously the "1e-" in "1e--5" would be treated as "1", but consumed
the "e-".

This wasn't an issue for hex floats.

I considered (and implemented) croaking instead, but this was
inconsistent with the behaviour for hex floats, which only reach this
code if a full hex float has been parsed.

2 months agolocale.c: Use strerror_l if platform has it
Karl Williamson [Sun, 16 Jul 2017 00:18:47 +0000 (18:18 -0600)] 
locale.c: Use strerror_l if platform has it

strerror_l makes the my_strerror function trivial, as it doesn't have to
worry about critical sections, etc.  Even on unthreaded perls, it avoids
having to change the current locale, and then change it back.

2 months agolocale.c: Refactor some #if clauses
Karl Williamson [Mon, 24 Jul 2017 18:34:29 +0000 (12:34 -0600)] 
locale.c: Refactor some #if clauses

This moves all the handling of the case where there are no locale
messages, instead of splitting it up across long stretches of
conditionally compiled code.  This code is essentially trivial, and seen
to be so when it isn't split up; this prepares for the next commit.

The final return of the function is still split off so that all branches
go through it, and the debugging code adjacent to it.

2 months agolocale.c: Move some DEBUGGING code
Karl Williamson [Mon, 24 Jul 2017 04:28:30 +0000 (22:28 -0600)] 
locale.c: Move some DEBUGGING code

This is moved so it gets executed for all branches.

2 months agoInitialize locale object even in unthreaded perls
Karl Williamson [Tue, 25 Jul 2017 18:46:00 +0000 (12:46 -0600)] 
Initialize locale object even in unthreaded perls

This commit will now initialize the thread-safe C locale object if the
POSIX 2008 functions are available, regardless of whether the perl is
threaded or not.  This will allow for a future commit that uses
them, and which is a win on unthreaded builds.

2 months agolocales: Add #define; change how to override
Karl Williamson [Mon, 24 Jul 2017 22:02:34 +0000 (16:02 -0600)] 
locales: Add #define; change how to override

This changes the controlling #define for using the POSIX 2008 locale
functions to "USE_POSIX_2008_LOCALE".  The previous controlling name
"USE_THREAD_SAFE_LOCALE" is retained for backward compatibility.

The reason for this change is that we may add thread-safe locale
handling even on platforms that don't have Posix 2008, so the name
USE_THREAD_SAFE_LOCALE would be used for controlling things in that
situation.

In other words, the concepts may become distinct, and so prepare for
that.

2 months agoperllocale: Rmv links to obsolete documents
Karl Williamson [Sat, 12 Aug 2017 23:42:58 +0000 (17:42 -0600)] 
perllocale: Rmv links to obsolete documents

2 months agoUse temp files with extensions in rt131211.t on VMS.
Craig A. Berry [Sat, 12 Aug 2017 13:11:47 +0000 (08:11 -0500)] 
Use temp files with extensions in rt131211.t on VMS.

On VMS, a file without an extension is really a file with an
explicitly specified "." indicating zero-length extension. This
was causing tests to fail with, for example, "abbbbbbbbbbbbc" not
matching "abbbbbbbbbbbbc." as returned by glob.

So add a ".tmp" extension to all the temp files on VMS only.

2 months agoFix missing break in tovmsspec.
Craig A. Berry [Sat, 12 Aug 2017 13:01:16 +0000 (08:01 -0500)] 
Fix missing break in tovmsspec.

When encountering a question mark in a filespec being converted
from Unix to VMS format, we were inadvertently adding an escaped
space because of a missing break in a switch.

2 months agoperldelta for fa2e45943e2b
Tony Cook [Thu, 10 Aug 2017 01:59:52 +0000 (11:59 +1000)] 
perldelta for fa2e45943e2b

2 months ago(perl #131786) avoid a duplicate symbol error on _LIB_VERSION
Tony Cook [Wed, 2 Aug 2017 06:15:06 +0000 (16:15 +1000)] 
(perl #131786) avoid a duplicate symbol error on _LIB_VERSION

For -flto -mieee-fp builds, the _LIB_VERSION definition in perl.c and
in libieee conflict, causing a build failure.

The test we perform in Configure checks only that such a variable exists
(and is declared), it doesn't check that we can *define* such a variable,
which the code in pp.c tried to do.

So rather than trying to define the variable, just initialize it during
our normal interpreter initialization.

2 months agoutf8.c: EBCDIC fix
Karl Williamson [Wed, 9 Aug 2017 20:42:32 +0000 (14:42 -0600)] 
utf8.c: EBCDIC fix

Commit d819dc506b9fbd0d9bb316e42ca5bbefdd5f1d77 did not fully work.  I
switched the wrong thing that should have been in native vs
Unicode/Latin1, and forgot to update the test file.

Hopefully this is correct.

2 months agoAdd Ken Brown to AUTHORS
Tony Cook [Wed, 9 Aug 2017 06:24:15 +0000 (16:24 +1000)] 
Add Ken Brown to AUTHORS

2 months agoConfigure: check for GCC 6 and 7
Ken Brown [Thu, 27 Jul 2017 15:57:44 +0000 (11:57 -0400)] 
Configure: check for GCC 6 and 7

2 months agotest cv_[gs]et_call_checker_flags()
Zefram [Tue, 8 Aug 2017 20:37:46 +0000 (21:37 +0100)] 
test cv_[gs]et_call_checker_flags()

2 months agouse cv_set_call_checker_flags() where possible
Zefram [Tue, 8 Aug 2017 19:06:11 +0000 (20:06 +0100)] 
use cv_set_call_checker_flags() where possible

Call checkers established by core code were being set through
cv_set_call_checker(), so requiring GVs to be created in some cases where
they could be avoided.  Make all the checkers non-GV-namegv capable,
and set them with cv_set_call_checker_flags().

The checkers for Devel::Peek::Dump() and
utf8::{unicode_to_native,native_to_unicode}() were already fit to handle
non-GV names, so required no changes.  The checker for CORE:: subs,
ck_entersub_args_core(), was naughtily using the name to decide which sub
it was dealing with in some cases, so move that information into the ckobj
that was already being used to identify the sub in most cases.  It also
required reformulation of some error reporting code to use cv_name().

2 months agoadd cv_get_call_checker_flags()
Zefram [Tue, 8 Aug 2017 12:30:01 +0000 (13:30 +0100)] 
add cv_get_call_checker_flags()

The new cv_get_call_checker_flags() is the obvious counterpart to
the existing cv_set_call_checker_flags(), which was added without
providing any public way to retrieve the flag state.  Not only does
cv_get_call_checker_flags() return the CALL_CHECKER_REQUIRE_GV flag
state, it also takes a flags parameter as an input, to allow for
future expansion.  The gflags input can at minimum be used for the
caller to indicate which flags it understands, if more checker flags
are added in the future, in case such flags are not ignorable in
the way that CALL_CHECKER_REQUIRE_GV is.  In this commit the gflags
parameter is applied to indicate whether the caller understands the
CALL_CHECKER_REQUIRE_GV flag, or more precisely (due to the funny inverted
sense of the flag) whether it understands the flag being clear.  This use
of gflags isn't really necessary, but establishes the pattern of usage.

2 months agoBump ExtUtils::Constant version to 0.24.
Nicholas Clark [Fri, 23 Jun 2017 15:06:25 +0000 (17:06 +0200)] 
Bump ExtUtils::Constant version to 0.24.

The Changes file is still horriby out of date, and the trickier-to-fix (or
test) bugs remain open in RT, but it seems better to get a release out with
the fixed bugs than delay it further whilst figuring out the cleanest way to
fix the open bugs. The perfect is the enemy of the good.

2 months agoExtUtils::Constant: Remove impediment to compiling under C++11
Karl Williamson [Sat, 19 Nov 2016 14:14:29 +0000 (07:14 -0700)] 
ExtUtils::Constant: Remove impediment to compiling under C++11

C++11 changed from earlier versions to require space between the end of
a string literal and a macro, so that a feature can unambiguously be
added to the language.  Starting in g++ 6.2, the compiler emits a
deprecation warning when there isn't a space (presumably so that future
versions can support C++11).  This commit fixes ExtUtils::Constant

This patch also changes any affected lines that exceed 79 columns, as
specified by perlhack.

Code and modules included with the Perl core need to be compilable using
C++.  This is so that perl can be embedded in C++ programs. (Actually,
only the hdr files need to be so compilable, but it would be hard to
test that just the hdrs are compilable.)  So we need to accommodate
changes to the C++ language.

2 months agoEU::Constant: avoid 'uninit' warning
David Mitchell [Mon, 15 Dec 2014 16:14:13 +0000 (16:14 +0000)] 
EU::Constant: avoid 'uninit' warning

The code generated by ExtUtils::Constant can look something like:

static int
constant (..., IV *iv_return) {
   switch (...) {
     case ...:
       *iv_return = ...;
       return PERL_constant_ISIV;
     ...
  }
}

{
    int type;
    IV iv;
    type = constant(..., &iv);
    switch (type) {
        case PERL_constant_ISIV:
            PUSHi(iv);
    ...
    }
}

and the compiler isn't clever enough to realise that the value of iv
is only used in the code path where its been set.

So initialise it to zero to shut gcc up. Ditto nv and pv.

2 months agoExtUtils::Constant - better machine code on threaded perl
Daniel Dragan [Sun, 10 May 2015 22:38:29 +0000 (18:38 -0400)] 
ExtUtils::Constant - better machine code on threaded perl

croak doesnt require a context param to be pushed on the c stack,
Perl_croak does, since Perl_croak/croak is very rarily called, minimize
the machine code of the error branches

don't do dTHX in thread aware XS code, this just sets up another my_perl
var for the scope of const-xs BOOT sum masking the original declared
my_perl in the outer C scope

2 months agoTypo fixes.
Nicholas Clark [Sat, 24 Jun 2017 19:08:51 +0000 (21:08 +0200)] 
Typo fixes.

Spotted by dsteinbrunner@pobox.com, reported as CPAN #85527.
However, I think that the "to to" should be "to do", not "to".

2 months agoAvoid compiler warnings due to mismatched types in *printf format strings.
Robin Barker [Mon, 17 Dec 2012 17:20:14 +0000 (18:20 +0100)] 
Avoid compiler warnings due to mismatched types in *printf format strings.

gcc (and probably others) was warning about a mismatch for between `int`
(implied by the format %d) and the actual type passed, `line_t`. Avoid this
by explicitly casting to UV, and using UVuf.

CPAN #63832

2 months agoregen/op_private: remove sassign special-casing
David Mitchell [Tue, 8 Aug 2017 11:19:53 +0000 (12:19 +0100)] 
regen/op_private: remove sassign special-casing

Since v5.25.5-46-g1257c08, sassign has been correctly listed in
regen/opcodes as a binary op ('2') rather than as a base op, so there's no
need to special-case it in regen/op_private any more.

This commit makes no functional changes, because since
v5.25.5-46-g1257c08, $args2{sassign} was redundantly getting set to a true
value twice, which was harmless. Now it only gets set once.

2 months agofix parameter name in doc
Zefram [Tue, 8 Aug 2017 10:44:22 +0000 (11:44 +0100)] 
fix parameter name in doc

The documentation for wrap_op_checker() had an incorrect parameter name.
This was part of the original version of this documentation in commit
e8570548af49b057631f1011e4b19c8c4a1342dd.

2 months agoRevert "Perl_sv_vcatpvfn_flags: skip IN_LC(LC_NUMERIC)"
David Mitchell [Tue, 8 Aug 2017 08:53:13 +0000 (09:53 +0100)] 
Revert "Perl_sv_vcatpvfn_flags: skip IN_LC(LC_NUMERIC)"

This reverts commit c10a72e1914795f6399890aafae13734552645cd.

I thought that if PL_numeric_radix_sv is true, then IN_LC(LC_NUMERIC) must
be true, so no need to test for both. So I replaced the expensive
IN_LC(LC_NUMERIC) test with an assert.

But in http://nntp.perl.org/group/perl.perl5.porters/245455, Karl points
out that  the assert is triggering on HP-UX.

So there's something wrong with my logic something.

So revert.

2 months ago(perl #131646) make the test less fragile
Tony Cook [Tue, 8 Aug 2017 04:45:29 +0000 (14:45 +1000)] 
(perl #131646) make the test less fragile

The original pattern "UXp>" with the $_ that causes the failure, 5,
so we end up packing exp(5) or 148.... with U packs:

 - U (148), producing C2 94, with the UTF8 flag set
 - X - back up a byte,
 - p> - write the address of PL_sv_no's PV in big-ending

The final p> will typically overwrite the 94 with a zero on 64-bit
systems, but with the smaller address space of 32-bit systems that
high-byte is more likely to be a valid continuation byte, causing
the comparison to fail.

Instead just pack a zero byte.

2 months agolib/locale.t: TODO some netbsd defective locales
Karl Williamson [Mon, 17 Jul 2017 21:40:42 +0000 (15:40 -0600)] 
lib/locale.t: TODO some netbsd defective locales

This is part of [perl #131735]

The ISO 8859-2 locales on netbsd 7.1 tend to have the defect of thinking
an NBSP is a graphic character.  This commit tells lib/locale.t to TODO
these failures, so that they don't fail our smokes.

These are defects in the locale furnished by the vendor, and not a Perl
bug.

2 months agolib/locale.t: Add comments
Karl Williamson [Mon, 7 Aug 2017 16:36:51 +0000 (10:36 -0600)] 
lib/locale.t: Add comments

This adds some general comments about the portions of the file that test
locales against what the POSIX standard specifies.

2 months agolib/locale.t: Canonicalize $^O into lowercase
Karl Williamson [Mon, 7 Aug 2017 15:57:25 +0000 (09:57 -0600)] 
lib/locale.t: Canonicalize $^O into lowercase

This allows the name to be checked for without needing to worry about
case.  Some patterns used /i, but other things used 'eq'.

2 months agofix index(...) == -1 type optimisations
David Mitchell [Mon, 7 Aug 2017 15:58:11 +0000 (16:58 +0100)] 
fix index(...) == -1 type optimisations

RT #131851

It was incorrectly optimising some permutations of comparison op and 0/-1
which shouldn't have been, such as

    0 < index(...);