This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
19 months agoprefer https URLs.
Kang-min Liu [Fri, 30 Aug 2019 01:47:25 +0000 (10:47 +0900)]
prefer https URLs.

19 months agobump $Time::HiRes::VERSION
Tony Cook [Mon, 9 Sep 2019 01:14:05 +0000 (11:14 +1000)]
bump $Time::HiRes::VERSION

19 months agoTime::HiRes: implement clock_gettime() and clock_getres() for win32
Tomasz Konojacki [Mon, 2 Sep 2019 05:37:17 +0000 (07:37 +0200)]
Time::HiRes: implement clock_gettime() and clock_getres() for win32

To make the implementation easier, the guts of gettimeofday() were
moved to a separate function named GetSystemTimePreciseAsFileTime().

[perl #134398]

19 months ago(perl #133981) fix my stupid mistake
Tony Cook [Thu, 5 Sep 2019 05:37:30 +0000 (15:37 +1000)]
(perl #133981) fix my stupid mistake

19 months agoImprove grammar in pod
Karl Williamson [Tue, 3 Sep 2019 22:54:39 +0000 (16:54 -0600)]
Improve grammar in pod

for  SvPV..._or_null, sv_utf8_downgraded_flags

19 months agoRemove deprecated flag from sv_nosharing.
Karl Williamson [Tue, 3 Sep 2019 20:19:26 +0000 (14:19 -0600)]
Remove deprecated flag from sv_nosharing.

I  recently introduced this by mistake.

19 months agoMerge branch 'ppport fixes' into blead
Karl Williamson [Tue, 3 Sep 2019 03:55:29 +0000 (21:55 -0600)]
Merge branch 'ppport fixes' into blead

This branch contains a large number of changes related to the next
release of Devel::PPPort, which will regenerate its API list for the
first time in many years.

Documentation for 20-ish items is furnished, and the fact that some
dozens more are documented outside perlapi is now noted.

There is a new flag, h, to the =apidoc lines that indicates to hide the
documentation from perlapi, but tie it to the current place, like
perlapio.  It would be not too difficult to have such things
automagically pulled into perlapi from these, should that be desirable.

It turns out there were several undocumented conventions between D:P and
the core code, like having a parameter name of 'cast' or 'type' (in a
macro prototype apidoc line) that allowed D:P to generate proper code to
test the macro in the face of this parameter not being a legal C type.
I have documented these conventions, and added a couple more that the
next release of D:P will understand.  One of those is a parameter of
'block' as used in the recently added WITH_LC_NUMERIC_foo macros.  The
usage example in perlapi now displays correctly.

And for the few macros that I didn't add a way to test in D:P, there is
a new flag, 'u' to indicate that they are unorthodox or unconventional
in some way; that is they won't compile as-is.  This is applied, for
example, to the STR_WITH_LEN() macro which returns a comma separated
pair.

One thing that I hadn't realized before is that moving a function to
mathoms when there is no macro allowing it to be bypassed is effectively
deprecating the use of that function.  mathoms can be cleaned out at any
time, and installations may Configure to not even compile it.  I changed
to require the deprecated flag if something is in mathoms with no macro.

In an earlier commit, I had added the M flag as opposed to the m flag,
which previously had done double duty: 1) the function was implemented
only via a macro; 2) the function is a real function, but there is an
(extra) macro that you can use to get the same functionality as the
function.  I did this to help downstream processing.  And it turns out
that D:P needs that too, and needs it for functions in mathoms.  There
really is no need for an m flag with the mathoms (b) flag.  So the
existing ones that have an extra macro to bypass them are changed to use
the M flag instead of m.  This was done in an earlier commit for other
functions in this file.

19 months agoembed.fnc: Clarify and fix 'b' flag description
Karl Williamson [Sun, 1 Sep 2019 03:07:33 +0000 (21:07 -0600)]
embed.fnc: Clarify and fix 'b' flag description

19 months agoembed.fnc: Fix typo in comment
Karl Williamson [Sun, 1 Sep 2019 03:05:22 +0000 (21:05 -0600)]
embed.fnc: Fix typo in comment

19 months agoembed.fnc: Correct grammar in comment
Karl Williamson [Sun, 1 Sep 2019 03:03:45 +0000 (21:03 -0600)]
embed.fnc: Correct grammar in comment

19 months agoembed.fnc: Trivial comment only
Karl Williamson [Sun, 1 Sep 2019 03:01:40 +0000 (21:01 -0600)]
embed.fnc: Trivial comment only

19 months agoRemove M flag from several functions
Karl Williamson [Sat, 31 Aug 2019 22:55:45 +0000 (16:55 -0600)]
Remove M flag from several functions

These do have an extra macro, but it's not relevant to the situation

19 months agoembed.fnc: Remove experimental status from some internal fcns
Karl Williamson [Sat, 31 Aug 2019 21:57:20 +0000 (15:57 -0600)]
embed.fnc: Remove experimental status from some internal fcns

These have been around long enough that they aren't going away.

19 months agoembed.fnc: Restrict the 'ref' function's accessibility
Karl Williamson [Sat, 31 Aug 2019 21:31:56 +0000 (15:31 -0600)]
embed.fnc: Restrict the 'ref' function's accessibility

This could otherwise cause name collisions.  It is only used in two .c
files in the core

19 months agoNote that config.h contains usable API macros
Karl Williamson [Sat, 31 Aug 2019 21:24:41 +0000 (15:24 -0600)]
Note that config.h contains usable API macros

Things like UVSIZE...

19 months agoFix documentation of WITH_LC_NUMERIC_foo
Karl Williamson [Sat, 31 Aug 2019 20:55:46 +0000 (14:55 -0600)]
Fix documentation of WITH_LC_NUMERIC_foo

Now that Devel::PPPort can handle a macro whose argument is a {...}
block, we can appropriately document these.

19 months agoDocument STMT_START .. STMT_END
Karl Williamson [Sat, 31 Aug 2019 20:55:07 +0000 (14:55 -0600)]
Document STMT_START .. STMT_END

Now that we have the 'u' flag we can document these macros and not have
to break downstream processing.

19 months agoMark BHK macros as unorthodox
Karl Williamson [Sat, 31 Aug 2019 20:47:48 +0000 (14:47 -0600)]
Mark BHK macros as unorthodox

This is because they take a preprocessor token as an argument

19 months agoNote that STR_WITH_LEN() is unorthodox
Karl Williamson [Sat, 31 Aug 2019 20:45:25 +0000 (14:45 -0600)]
Note that STR_WITH_LEN() is unorthodox

Now that we have the 'u' flag for macros, this one returns
a pair of values, so should be marked as such.

19 months agoChange pod for macros that require "literal strings"
Karl Williamson [Sat, 31 Aug 2019 20:40:12 +0000 (14:40 -0600)]
Change pod for macros that require "literal strings"

Now that Devel::PPPort  has the ability to handle these, we can loosen
the syntax for clarity.

19 months agoembed.fnc: Clarify comments, and note 'u' flag exceptions
Karl Williamson [Sat, 31 Aug 2019 20:30:29 +0000 (14:30 -0600)]
embed.fnc: Clarify comments, and note 'u' flag exceptions

The next release of Devel::PPPort will know how to handle all these
unorthodox functions, so no need to declare them as such, and in fact
they shouldn't be declared so.

19 months agoembed.fnc: Add 'u' flag for unorthodox parameter macros
Karl Williamson [Sat, 31 Aug 2019 20:25:26 +0000 (14:25 -0600)]
embed.fnc: Add 'u' flag for unorthodox parameter macros

This tells downstream processors, such as Devel::PPPort that compiling
macros like these will be won't work, as they have some issue.  For
example, aTHX_ expands to have a trailing comma.

19 months agoRefer to CopLABEL_len[_flags] in pod for cop_fetch_label
Karl Williamson [Sat, 31 Aug 2019 20:12:49 +0000 (14:12 -0600)]
Refer to CopLABEL_len[_flags] in pod for cop_fetch_label

19 months agoDocument CopLABEL[_len[_flags]]
Karl Williamson [Sat, 31 Aug 2019 20:10:52 +0000 (14:10 -0600)]
Document CopLABEL[_len[_flags]]

19 months agoNote that various items in perlguts are documented
Karl Williamson [Sat, 31 Aug 2019 19:58:16 +0000 (13:58 -0600)]
Note that various items in perlguts are documented

19 months agoperlguts: Document save_item
Karl Williamson [Sat, 31 Aug 2019 19:59:35 +0000 (13:59 -0600)]
perlguts: Document save_item

19 months agosv.c: Note that some SV flags are documented
Karl Williamson [Sat, 31 Aug 2019 18:59:08 +0000 (12:59 -0600)]
sv.c: Note that some SV flags are documented

19 months agoRemove redundant documentation for PL_parser
Karl Williamson [Sat, 31 Aug 2019 17:10:54 +0000 (11:10 -0600)]
Remove redundant documentation for PL_parser

19 months agoNote that various XS macros are documented
Karl Williamson [Sat, 31 Aug 2019 17:09:19 +0000 (11:09 -0600)]
Note that various XS macros are documented

19 months agoNote that AvFILLp is not for public use
Karl Williamson [Sat, 31 Aug 2019 17:07:38 +0000 (11:07 -0600)]
Note that AvFILLp is not for public use

19 months agoNote that PERL_VERSION and kin are documented
Karl Williamson [Sat, 31 Aug 2019 17:05:58 +0000 (11:05 -0600)]
Note that PERL_VERSION and kin are documented

19 months agoNote that mro[gs]et_private_data are documented
Karl Williamson [Sat, 31 Aug 2019 17:05:11 +0000 (11:05 -0600)]
Note that mro[gs]et_private_data are documented

19 months agoNote that filter_add, filter_read are documented
Karl Williamson [Sat, 31 Aug 2019 17:03:45 +0000 (11:03 -0600)]
Note that filter_add, filter_read are documented

19 months agoNote that PL_errgv is documented
Karl Williamson [Sat, 31 Aug 2019 17:03:21 +0000 (11:03 -0600)]
Note that PL_errgv is documented

19 months agoNote that G_METHOD[_NAMED] are documented
Karl Williamson [Sat, 31 Aug 2019 17:02:14 +0000 (11:02 -0600)]
Note that G_METHOD[_NAMED] are documented

19 months agoNote that PERL_MAGIC_foo are documented
Karl Williamson [Fri, 30 Aug 2019 20:19:18 +0000 (14:19 -0600)]
Note that PERL_MAGIC_foo are documented

19 months agoDocument PERL_INT_MAX, and similar
Karl Williamson [Fri, 30 Aug 2019 20:18:09 +0000 (14:18 -0600)]
Document PERL_INT_MAX, and similar

19 months agoDocument my_exit()
Karl Williamson [Fri, 30 Aug 2019 20:14:28 +0000 (14:14 -0600)]
Document my_exit()

19 months agonumeric.c: Note that flag bit names are documented
Karl Williamson [Fri, 30 Aug 2019 20:11:49 +0000 (14:11 -0600)]
numeric.c: Note that flag bit names are documented

19 months agoNote that [cm]alloc, realloc are documented
Karl Williamson [Fri, 30 Aug 2019 20:09:48 +0000 (14:09 -0600)]
Note that [cm]alloc, realloc are documented

As they are really Unix calls

19 months agoDocument HvFILL
Karl Williamson [Fri, 30 Aug 2019 20:09:13 +0000 (14:09 -0600)]
Document HvFILL

19 months agoDocument WIDEST_UTYPE
Karl Williamson [Fri, 30 Aug 2019 20:08:13 +0000 (14:08 -0600)]
Document WIDEST_UTYPE

19 months agogv.c: Note that some GV_foo constants are documented
Karl Williamson [Fri, 30 Aug 2019 20:06:20 +0000 (14:06 -0600)]
gv.c: Note that some GV_foo constants are documented

19 months agodump.c: Note that constants to pass are documented
Karl Williamson [Fri, 30 Aug 2019 20:05:27 +0000 (14:05 -0600)]
dump.c: Note that constants to pass are documented

19 months agoConfig: mention it is generated by configpm
Karl Williamson [Fri, 30 Aug 2019 20:00:36 +0000 (14:00 -0600)]
Config: mention it is generated by configpm

19 months agoDocument UTF8_MAXBYTES
Karl Williamson [Fri, 30 Aug 2019 19:57:05 +0000 (13:57 -0600)]
Document UTF8_MAXBYTES

19 months agoDocument rsignal()
Karl Williamson [Fri, 30 Aug 2019 19:56:30 +0000 (13:56 -0600)]
Document rsignal()

19 months agoDocument my_setenv()
Karl Williamson [Fri, 30 Aug 2019 19:56:10 +0000 (13:56 -0600)]
Document my_setenv()

19 months agoDocument instr()
Karl Williamson [Fri, 30 Aug 2019 19:49:36 +0000 (13:49 -0600)]
Document instr()

19 months agoNote that the PerlIO functions and macros are documented
Karl Williamson [Sat, 31 Aug 2019 23:15:45 +0000 (17:15 -0600)]
Note that the PerlIO functions and macros are documented

in perlapio

19 months agoNote that the warnings categories are documented
Karl Williamson [Fri, 30 Aug 2019 03:23:20 +0000 (21:23 -0600)]
Note that the warnings categories are documented

This generates a hidden apidoc entry for the warnings categories, for
downstream processing, like Devel::PPPort.

19 months agowarnings.h: Add pod about finding the XS warning category
Karl Williamson [Thu, 29 Aug 2019 22:52:45 +0000 (16:52 -0600)]
warnings.h: Add pod about finding the XS warning category

The XS category names are easily derivable from the chart of perl-space
categories.

19 months agoregen/embed.pl: Enforce 'b' without 'M' requires 'D'
Karl Williamson [Sun, 1 Sep 2019 02:53:03 +0000 (20:53 -0600)]
regen/embed.pl: Enforce 'b' without 'M' requires 'D'

19 months agoembed.fnc: Functions in mathoms are deprecated
Karl Williamson [Sun, 1 Sep 2019 02:03:04 +0000 (20:03 -0600)]
embed.fnc: Functions in mathoms are deprecated

(unless there is a macro to bypass them)

These functions can be removed at any time, and any installation may
disallow them.  So they are effectively deprecated.  Make this explicit.

19 months agoregen/embed.pl: Enforce mutual exclusivity of 'b', 'm'
Karl Williamson [Sun, 1 Sep 2019 02:51:52 +0000 (20:51 -0600)]
regen/embed.pl: Enforce mutual exclusivity of 'b', 'm'

19 months agoembed.fnc: pack_cat, pad_compname_type have macro
Karl Williamson [Sat, 31 Aug 2019 22:43:35 +0000 (16:43 -0600)]
embed.fnc: pack_cat, pad_compname_type have macro

contrary to what was specified here

19 months agoembed.fnc: Use M flag generally with b, not m.
Karl Williamson [Tue, 20 Aug 2019 18:35:49 +0000 (12:35 -0600)]
embed.fnc: Use M flag generally with b, not m.

Commit 54c193aee0eb1f20806952d8fcd2ddadd5e57600 introduced the M flag,
to indicate an extra macro in addition to a regular function, beyond the
m flag which indicates a macro that replaces the function.  This
distinction matters to downstream processes.

But some of the functions with the b flag (hence in mathoms) still had
an m flag, but the macro is actually extra.  This commit changes those
from m to M.

19 months agoembed.fnc: There is no macro for sv_nolocking()
Karl Williamson [Sat, 31 Aug 2019 23:00:26 +0000 (17:00 -0600)]
embed.fnc: There is no macro for sv_nolocking()

Contrary to what this said.

19 months agoperlapi: Formally give prototypes for isFOO variants
Karl Williamson [Mon, 5 Aug 2019 03:03:42 +0000 (21:03 -0600)]
perlapi: Formally give prototypes for isFOO variants

These macros are documented unconventionally, with the main one of a
type documented, and the corresponding variants listed with a pointer to
how the variant differs from the main entry.  This is because they all
have similar corresponding variants, and doing it this way makes the
documentation more compact.  But downstream software is looking for
an apidoc entry to know about the existence of these.  This commit adds
that, using the new 'h', or hidden flag to suppress them from being
displayed.

19 months agoautodoc.pl: Add h flag for hidden documentation
Karl Williamson [Thu, 29 Aug 2019 22:28:33 +0000 (16:28 -0600)]
autodoc.pl: Add h flag for hidden documentation

This is to be used when the documentation exists, but isn't the typical
sort in perlapi or perlintern.

19 months agoperlapi: Document memEQs memNEs
Karl Williamson [Mon, 5 Aug 2019 00:26:16 +0000 (18:26 -0600)]
perlapi: Document memEQs memNEs

19 months agoperlapi: Document C_ARRAY_LENGTH, END
Karl Williamson [Mon, 5 Aug 2019 00:25:31 +0000 (18:25 -0600)]
perlapi: Document C_ARRAY_LENGTH, END

19 months agoperlapi: Document __ASSERT_
Karl Williamson [Mon, 5 Aug 2019 00:23:03 +0000 (18:23 -0600)]
perlapi: Document __ASSERT_

19 months agoperlapi: Document cBOOL
Karl Williamson [Mon, 5 Aug 2019 00:22:16 +0000 (18:22 -0600)]
perlapi: Document cBOOL

19 months agoperlapi: Document XST_mUV
Karl Williamson [Mon, 5 Aug 2019 00:21:11 +0000 (18:21 -0600)]
perlapi: Document XST_mUV

This one was missing from the set

19 months agoperlapi: Document GROK_NUMERIC_RADIX, PERL_ABS
Karl Williamson [Mon, 5 Aug 2019 00:19:25 +0000 (18:19 -0600)]
perlapi: Document GROK_NUMERIC_RADIX, PERL_ABS

19 months agoperlapi: Document my_strotod, Strtod
Karl Williamson [Mon, 5 Aug 2019 00:17:48 +0000 (18:17 -0600)]
perlapi: Document my_strotod, Strtod

19 months agoperlapi: Document IN_LOCALE, and related
Karl Williamson [Mon, 5 Aug 2019 00:16:10 +0000 (18:16 -0600)]
perlapi: Document IN_LOCALE, and related

19 months agoperlapi: Document LIKELY, UNLIKELY
Karl Williamson [Mon, 5 Aug 2019 00:14:43 +0000 (18:14 -0600)]
perlapi: Document LIKELY, UNLIKELY

19 months agoperlapi: Document SvUVXx()
Karl Williamson [Mon, 5 Aug 2019 00:03:03 +0000 (18:03 -0600)]
perlapi: Document SvUVXx()

I'm doing so because Devel::PPPort provides this function.

19 months agoperlapi: Document UNICODE_REPLACEMENT
Karl Williamson [Mon, 5 Aug 2019 00:01:11 +0000 (18:01 -0600)]
perlapi: Document UNICODE_REPLACEMENT

19 months agoperlapi: Document NATIVE_to_foo, converse functions
Karl Williamson [Mon, 5 Aug 2019 00:00:01 +0000 (18:00 -0600)]
perlapi: Document NATIVE_to_foo, converse functions

19 months agoperlapi: Generalize SEE ALSO lists
Karl Williamson [Sat, 31 Aug 2019 17:16:40 +0000 (11:16 -0600)]
perlapi: Generalize SEE ALSO lists

This makes sure perlintern and perlapi are consistent

19 months agoregen/embed.pl: Improve error msg
Karl Williamson [Sun, 1 Sep 2019 02:45:08 +0000 (20:45 -0600)]
regen/embed.pl: Improve error msg

by indicating which function the problem occurs in

19 months agoregen/embed.pl: Sort accepted flags list; N n s are legal
Karl Williamson [Fri, 30 Aug 2019 19:06:18 +0000 (13:06 -0600)]
regen/embed.pl: Sort accepted flags list; N n s are legal

This makes it easier to look up a flag in the list.  It had gotten out
of order due to an earlier renaming of a flag.  And several legal flags
(though not used in embed.fnc) were missing

19 months agoperlapi: Clarify pod for cop_store_label
Karl Williamson [Sat, 31 Aug 2019 20:13:57 +0000 (14:13 -0600)]
perlapi: Clarify pod for cop_store_label

19 months agoperlapi: Fix pod for perl_clone()
Karl Williamson [Sat, 31 Aug 2019 19:01:24 +0000 (13:01 -0600)]
perlapi: Fix pod for perl_clone()

There were grammar mistakes, and the example it cited is no longer
valid.

19 months agot/re/pat.t: Use ASCII ' in comment, not Unicode char
Karl Williamson [Fri, 30 Aug 2019 16:32:15 +0000 (10:32 -0600)]
t/re/pat.t: Use ASCII ' in comment, not Unicode char

19 months agoperldelta for 6c3320363f6cd
Tony Cook [Tue, 3 Sep 2019 01:15:23 +0000 (11:15 +1000)]
perldelta for 6c3320363f6cd

19 months ago(perl #133981) fix for Win32 setlocale() abort
Tony Cook [Wed, 24 Jul 2019 05:56:08 +0000 (15:56 +1000)]
(perl #133981) fix for Win32 setlocale() abort

This appears to abort because the supplied locale string isn't validly
encoded in the current code page, so we see the following steps:

1) an internal sizing call to mbstowcs_s() fails, but

2) the calling (CRT) code doesn't handle that, allocating a zero length
buffer

3) mbstowcs_s() is called with a buffer and a zero size, causing the
exception.

Since it's the conversion that fails, perform our own conversion.

Rather than using the current code page always use CP_UTF8, since
this is perl's typical non-Latin1 encoding.

Unfortunately we don't have the SVf_UTF8 flag at this point, so
all we can do is assume UTF-8.

This introduces a change in behaviour - previously locale names
were interpreted in the current code page, but most locale names
are ASCII, so it shouldn't matter.

One issue is that the return value is freed on the next LEAVE, but
all callers immediately use or copy the string.

19 months agoperldelta for 05a03c0da6f3
Tony Cook [Mon, 2 Sep 2019 23:19:52 +0000 (09:19 +1000)]
perldelta for 05a03c0da6f3

19 months ago(perl #134390) don't leak the SV we just created on an early return
Tony Cook [Mon, 2 Sep 2019 05:35:36 +0000 (15:35 +1000)]
(perl #134390) don't leak the SV we just created on an early return

19 months agoMore SvPV* macros
Tony Cook [Mon, 2 Sep 2019 01:35:47 +0000 (11:35 +1000)]
More SvPV* macros

19 months agobump $XS::APItest::VERSION
Tony Cook [Mon, 2 Sep 2019 01:28:16 +0000 (11:28 +1000)]
bump $XS::APItest::VERSION

19 months agoImplement SvPV*_or_null*
Pali [Sat, 10 Feb 2018 14:10:04 +0000 (15:10 +0100)]
Implement SvPV*_or_null*

19 months agoImplement SvPVutf8_nomg and SvPVbyte_nomg
Pali [Sat, 10 Feb 2018 12:41:46 +0000 (13:41 +0100)]
Implement SvPVutf8_nomg and SvPVbyte_nomg

19 months agotest for desired magic fetches/stores for vec()
Tony Cook [Tue, 19 Mar 2019 23:53:17 +0000 (10:53 +1100)]
test for desired magic fetches/stores for vec()

for #132782

19 months agoFix do_vecget and do_vecset to process GET magic only once
Pali [Sat, 10 Feb 2018 12:41:19 +0000 (13:41 +0100)]
Fix do_vecget and do_vecset to process GET magic only once

19 months agoImplement sv_utf8_downgrade_nomg
Pali [Sat, 10 Feb 2018 12:40:47 +0000 (13:40 +0100)]
Implement sv_utf8_downgrade_nomg

19 months agoSupply missing right brace in regex example
James E Keenan [Sat, 31 Aug 2019 23:18:36 +0000 (19:18 -0400)]
Supply missing right brace in regex example

As suggested by Jim Avera in RT 134395.

19 months ago-DDEBUGGING does not go in ccflags on VMS.
Craig A. Berry [Sat, 31 Aug 2019 19:10:07 +0000 (14:10 -0500)]
-DDEBUGGING does not go in ccflags on VMS.

But there is a platform-specific %Config entry for it so use that
and avoid the assertion-induced failure of uv.t in debugging builds.

19 months agoFix parent directory in pod2usage auxiliary script.
Craig A. Berry [Fri, 30 Aug 2019 16:28:42 +0000 (11:28 -0500)]
Fix parent directory in pod2usage auxiliary script.

File::Basename::dirname does not always remove the last component
of the path if that component is already a directory, depending on
platform.  This behavior is documented. pod2usage.t has been
failing on VMS because we get the wrong directory into @INC.

So, since we already have File::Spec loaded, just use the more
obvious and portable method for getting the parent directory.

Reported upstream at:

   <https://rt.cpan.org/Ticket/Display.html?id=130418>

19 months ago(perl #134365) IFF -> iff and talk about strict a bit
Tony Cook [Tue, 27 Aug 2019 04:44:35 +0000 (14:44 +1000)]
(perl #134365) IFF -> iff and talk about strict a bit

The IFF can be confusing, since "iff" for "if and only if" is
normally presented in lower case.

Since we really want people using strict, firstly tell users about
the behaviour under strict.

19 months agoAvoid 2 arg open and bareword handles
Dan Book [Wed, 28 Aug 2019 22:41:34 +0000 (18:41 -0400)]
Avoid 2 arg open and bareword handles

19 months agoRewrite paragraph on using strict and warnings
Dan Book [Wed, 28 Aug 2019 22:34:51 +0000 (18:34 -0400)]
Rewrite paragraph on using strict and warnings

19 months agoPATCH: [perl #134329] Use after free in regcomp.c
Karl Williamson [Fri, 23 Aug 2019 18:40:24 +0000 (12:40 -0600)]
PATCH: [perl #134329] Use after free in regcomp.c

A compiled regex is composed of nodes, forming a linked list, with
normally a maximum of 16 bits used to specify the offset of the next
link.  For patterns that require more space than this, the nodes that
jump around are replaced with ones that have wider offsets.  Most nodes
are unaffected, as they just contain the offset of the next node, and
that number is always small.  The jump nodes are the ones affected.

When compiling a pattern, the 16 bit mechanism is used, until it
overflows, at which point the pattern is recompiled with the long jumps
instead.

When I rewrote the compiler last year to make it generally one pass, I
noticed a lot of the cases where a node was added didn't check if the
result overflowed (the function that does this returns FALSE in that
case).  I presumed the prior authors knew better, and did not change
things, except to put in a bogus value in the link (offset) field that
should cause a crash if it were used.  That's what's happening in this
ticket.

But seeing this example, it's clear that the return value should be
checked every time, because you can reach the limit at any time.  This
commit changes to do that, and to require the function's return value to
not be ignored, to guard against future changes.

My guess is that the reason it generally worked when there were multiple
passes is that the first pass didn't do anything except count space, and
that at some point before the end of the pass the return value did get
checked, so by the time the nodes were allocated for real, it knew
enough to use the long jumps.

19 months agoElvis has left the building
Chris 'BinGOs' Williams [Tue, 27 Aug 2019 15:42:37 +0000 (16:42 +0100)]
Elvis has left the building

19 months agoPATCH: [perl #134325] Heap buffer overflow
Karl Williamson [Sun, 25 Aug 2019 01:17:19 +0000 (19:17 -0600)]
PATCH: [perl #134325] Heap buffer overflow

This was the result of trying to continue to parse after realizing that
we were going to have to reparse using long jumps.  This continuing only
happened when we realized we were going to have to reparse in order to
count parentheses anyway, and it was an attempt to save a pass in the
regex compiler, as without doing the continuing we'd restart the parse
to use long jumps from the beginning, and then when finished, would
restart the parse to count the parentheses.

However, in most cases this doesn't help, as when we get towards the end
of the parse (as in the test case in this ticket), we need the long
jump, and will segfault because we don't have it.  So we need the extra
pass anyway.

So this commit restarts the parse as soon as we discover we are going to
need longjumps

19 months agoNVMANTBITS is 64 on mingw-w64 'long double' builds
sisyphus [Fri, 23 Aug 2019 11:58:00 +0000 (21:58 +1000)]
NVMANTBITS is 64 on mingw-w64 'long double' builds

19 months agoperldelta: Fix typo
Karl Williamson [Mon, 26 Aug 2019 18:18:01 +0000 (12:18 -0600)]
perldelta: Fix typo