This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
8 years agoRemove ‘bad top format’ error
Father Chrysostomos [Mon, 10 Jun 2013 00:30:56 +0000 (17:30 -0700)]
Remove ‘bad top format’ error

This is unreachable.  It only happens in pp_leavewrite when IoTOP_GV(io)
is null, but the code leading up to it makes sure that IoTOP_GV(io) is not
null.  If it is still null, it jumps past the error with ‘goto forget_top’.

8 years agoperldiag: Tweak ‘'%c' allowed only after types’
Father Chrysostomos [Sun, 9 Jun 2013 21:37:50 +0000 (14:37 -0700)]
perldiag: Tweak ‘'%c' allowed only after types’

by adding ‘in %s’ to the end.  Though strictly unnecessary, having
more of the unvarying parts of the string displayed in perldiag is
generally a good thing, and this also appeases diag.t.  (The former is
my main reason for the change, the latter incidental.)

8 years agoBump version in Carp::Heavy.
James E Keenan [Sun, 26 May 2013 02:52:00 +0000 (04:52 +0200)]
Bump version in Carp::Heavy.

8 years agoCarp: Don't autovivify the CARP_NOT or ISA array
Brian Fraser [Mon, 13 May 2013 19:37:22 +0000 (16:37 -0300)]
Carp: Don't autovivify the CARP_NOT or ISA array

In this situation:

    use Carp;
    package Foo;
    $CARP_NOT = 1;
    warn *{$Foo::{CARP_NOT}}{ARRAY} || 'undefined';
    eval { Carp::croak(1) };
    warn *{$Foo::{CARP_NOT}}{ARRAY} || 'undefined';

The second warn shows that Carp is autovivifying the ARRAY slot
of the glob.  This commit builds on the previous and checks that
the array exists before trying to use it.

8 years agoCarp: Stop polluting the caller's namespace if they lack @CARP_NOT or @ISA
Brian Fraser [Mon, 13 May 2013 18:57:18 +0000 (15:57 -0300)]
Carp: Stop polluting the caller's namespace if they lack @CARP_NOT or @ISA

Turns out that this:

perl -MCarp -le 'package Foo; eval { Carp::croak(1) }; print keys %Foo::;'

Would leave two new symbols in Foo, CARP_NOT and ISA. This commit
changes trusts_directly() to check if the symbols exists in the
stash before using them.

8 years agoAUTHORS: Use tabs consistently
Father Chrysostomos [Sun, 9 Jun 2013 19:00:32 +0000 (12:00 -0700)]
AUTHORS: Use tabs consistently

Since this is not just a source file, but a file to be read by the public
as is, we cannot mix tabs and spaces.

8 years agopodcheck.t: Use scalar instead of array
Father Chrysostomos [Sun, 9 Jun 2013 18:27:17 +0000 (11:27 -0700)]
podcheck.t: Use scalar instead of array

The contents of @thankful_diagnostics are never used, only the length.
So it can simply be a scalar containing a count.

8 years agoSynchronize pod2html usage output and its POD text
Petr Písař [Sun, 9 Jun 2013 18:14:24 +0000 (14:14 -0400)]
Synchronize pod2html usage output and its POD text

8 years agoadd Petr Písař to the AUTHORS file
Ricardo Signes [Sun, 9 Jun 2013 18:02:18 +0000 (14:02 -0400)]
add Petr Písař to the AUTHORS file

8 years agoSynchronize h2ph POD text with usage output
Petr Písař [Sun, 9 Jun 2013 18:01:49 +0000 (14:01 -0400)]
Synchronize h2ph POD text with usage output

8 years agotweak perltw.pod for long lines (and default exports)
Ricardo Signes [Sun, 9 Jun 2013 15:37:13 +0000 (11:37 -0400)]
tweak perltw.pod for long lines (and default exports)

8 years agoadd gugod to the AUTHORS file
Ricardo Signes [Sun, 9 Jun 2013 15:33:57 +0000 (11:33 -0400)]
add gugod to the AUTHORS file

8 years agoRemove references of "encoding" module in README.tw
Kang-min Liu [Sat, 11 May 2013 18:00:53 +0000 (20:00 +0200)]
Remove references of "encoding" module in README.tw

8 years agouse more descriptive examples in File::Copy
Zsbán Ambrus [Sun, 9 Jun 2013 14:50:06 +0000 (10:50 -0400)]
use more descriptive examples in File::Copy

8 years agonote that the return value of for is unspecified
Ricardo Signes [Sun, 9 Jun 2013 13:41:45 +0000 (09:41 -0400)]
note that the return value of for is unspecified

[perl #118121]

8 years agodocument the /p flag and related variables in delta
Zsban Ambrus [Sun, 9 Jun 2013 13:26:22 +0000 (09:26 -0400)]
document the /p flag and related variables in delta

8 years agoremove -Dmad string length restriction
David Mitchell [Sun, 9 Jun 2013 09:50:15 +0000 (10:50 +0100)]
remove -Dmad string length restriction

Under -Dmad, with PERL_MADSKILLS > 0, it prints a warning for every
string that is grown to be >= 1Mb. I can't see that it makes any sense to
do this, so I suspect that this is residual code from MAD development, or
an accidental copying of the almost identical #ifdef HAS_64K_LIMIT
piece of code directly following it.

8 years agoIncrease some File::Spec versions to 3.41
Father Chrysostomos [Sun, 9 Jun 2013 06:10:18 +0000 (23:10 -0700)]
Increase some File::Spec versions to 3.41

8 years agoCorrect File::Spec POD about tainting and tmpdir
Father Chrysostomos [Sun, 9 Jun 2013 06:03:56 +0000 (23:03 -0700)]
Correct File::Spec POD about tainting and tmpdir

Since version 3.39_01, the taint check has applied before 5.8.0, too.

8 years ago[perl #89940] File::Spec->tmpdir and env changes
Father Chrysostomos [Sun, 9 Jun 2013 06:01:07 +0000 (23:01 -0700)]
[perl #89940] File::Spec->tmpdir and env changes

If the environment changes, File::Spec->tmpdir should respect that and
recalculate the temp directory.

The only objection raised in the ticket was that File::Spec is already
accused of being too slow, so removing the cache would not be a good
idea.  So I put in a check to see whether the relevant environment
variables have changed since the last call to tmpdir.

8 years agoFile::Spec::Epoc: Small pod clean-up
Father Chrysostomos [Sun, 9 Jun 2013 05:33:24 +0000 (22:33 -0700)]
File::Spec::Epoc: Small pod clean-up

8 years agoFlush PL_stashcache on glob-to-glob assignment
Father Chrysostomos [Sat, 8 Jun 2013 21:38:02 +0000 (14:38 -0700)]
Flush PL_stashcache on glob-to-glob assignment

Commit dc93d7fb33f6b2093 says this:

    Flush PL_stashcache when assigning a file handle to a typeglob.

    File handles take priority over stashes for method dispatch.
    Assigning a file handle to a typeglob potentially creates a file
    handle where one did not exist before.  As PL_stashcache only con-
    tains entries for names which unambiguously resolve to stashes,
    such a change may mean that PL_stashcache now contains an invalid
    entry.  As it’s hard to work out exactly which entries might be
    affected, simply flush the entire cache and let it rebuild itself.

But it only applied to io-to-glob assignment.  This commit extends it
to glob-to-glob assignment.

8 years agopp_hot.c: Correct comment
Father Chrysostomos [Sat, 8 Jun 2013 21:13:21 +0000 (14:13 -0700)]
pp_hot.c: Correct comment

At this point, ob holds the object the reference points to, not the
reference itself.

8 years agopodcheck.t: Output fixed problems as passing to-do tests
Father Chrysostomos [Sat, 8 Jun 2013 21:07:38 +0000 (14:07 -0700)]
podcheck.t: Output fixed problems as passing to-do tests

8 years agoImprove fileno example
Dominic Hargreaves [Sun, 9 Jun 2013 00:28:50 +0000 (01:28 +0100)]
Improve fileno example

Quoting from the fileno section of this document:

"[...]  If there is no real file descriptor at the OS level, as can
happen with filehandles connected to memory objects via "open" with a
reference for the third argument, -1 is returned."

Update the example to cater for this situation. Thanks to
Niels Thykier for the suggestion.

Bug-Debian: http://bugs.debian.org/706749

8 years agoadd 1 to SvGROW under COW (and fix svleak.t)
David Mitchell [Sat, 8 Jun 2013 17:24:51 +0000 (18:24 +0100)]
add 1 to SvGROW under COW (and fix svleak.t)

the new COW scheme uses SvPVX(sv)[SvLEN(sv)-1] (if spare)
to store the COW reference count. If this byte isn't spare, the string is
copied rather than COWed.  So, when built under the new COW, allocate one
more byte than asked for in sv_grow(), to make it likely this byte is
always spare: and thus make more strings COW-able. If the new size is a
big power of two, don't bother: we assume the caller wanted a nice 2^N
sized block and will be annoyed at getting 2^N+1 or more.

Note that sv_grow() already rounds up. For example: formerly, strings of
length 1..15 were allocated 16 bytes, 16..31 allocated 32 bytes, etc
(usually allowing +1 for trailing \0).

Now its 1..14 => 16, 15..30 => 32 etc.

As a side-effect, this should fix a bizarre occasionally failing svleak.t
test under COW. This test,

    '"too many errors" from constant overloading returning undef'

basically twice evals some code that is expected to fail. If over the
course of the second eval the total number of allocated SVs grows, then
the test fails. This particular eval uses overload::constant, and that
module has this code:

    "$_[1]" !~ /(^|=)CODE\(0x[0-9a-f]+\)$/

i.e. match against a stringified reference. Now, if it stringifies to a
15-char string (e.g. "CODE(0x1234567)"), then SvCUR is 15 and SvLEN is 16,
and there isn't a spare byte (after allowing for \0) for the COW ref
count, so the string can't be COWed. Now, if during the first eval,
addresses are in the range 0x1000000..0xfffffff, then COW doesn't kick in.
If during the second eval they fall outside this range, COW kicks in, and
a new SV (which is a COW copy of the string) is attached to the regex, for
capture info. This new SV won't be released until the regex is released,
and so appears to be a leak. If COW kicks in during the first eval then
this isn't an issue, as it will just be reused during the second eval.

This was exceedingly difficult to reliably reproduce, as it was heavily
affected by kernel address randomisation (on linux); plus part of the test
file used rand(); plus of course the hash randomisation and perturbation
feature in 5.18.

I eventually cracked it by: tweaking the hash randomisation; hacking the
perl seed code to use an ENV var rather than /dev/urandom; hacking the
perl startup to display the initial system brk(), then when it failed,
hacked it again to set that particular brk().

8 years ago[perl #117941] reset crashes when current stash is freed
Father Chrysostomos [Sat, 8 Jun 2013 07:23:02 +0000 (00:23 -0700)]
[perl #117941] reset crashes when current stash is freed

8 years agoperldiag: typo
Father Chrysostomos [Sat, 8 Jun 2013 07:11:40 +0000 (00:11 -0700)]
perldiag: typo

8 years ago[perl #117941] eval crashes when current stash is freed
Father Chrysostomos [Sat, 8 Jun 2013 07:11:23 +0000 (00:11 -0700)]
[perl #117941] eval crashes when current stash is freed

8 years ago[perl #117941] Blessing into freed current stash
Father Chrysostomos [Sat, 8 Jun 2013 06:56:23 +0000 (23:56 -0700)]
[perl #117941] Blessing into freed current stash

If the current stash has been freed, bless() with one argument will
cause a crash when the object’s ‘stash’ is accessed.  Simply disallow-
ing this is the easiest fix.

8 years ago[perl #117941] Handle vivification crashing w/freed stash
Father Chrysostomos [Sat, 8 Jun 2013 06:41:32 +0000 (23:41 -0700)]
[perl #117941] Handle vivification crashing w/freed stash

open’s handle vivification could crash if the current stash was freed,
so check before passing a freed stash to gv_init.

8 years agoStop using PL_sortstash
Father Chrysostomos [Sat, 8 Jun 2013 06:28:38 +0000 (23:28 -0700)]
Stop using PL_sortstash

Originally, the value of PL_sortstash was used to determine whether
PL_firstgv and PL_secondgv (which point to *a and *b in the current
package) needed to be updated (involving symbol lookup).  PL_sortstash
would contain the last package sorted in.  If PL_sortstash did not
point to the current stash, then they would be updated, along with
PL_sortstash.

Sort was made reëntrant in 2000 in commit 8e664e1028b.  This involved
saving and restoring the values of PL_firstgv and PL_secondgv via the
savestack.  The logic introduced by that commit was thus:

+               if (PL_sortstash != stash || !PL_firstgv || !PL_secondgv) {
+                   SAVESPTR(PL_firstgv);
+                   SAVESPTR(PL_secondgv);
+                   PL_firstgv = gv_fetchpv("a", TRUE, SVt_PV);
+                   PL_secondgv = gv_fetchpv("b", TRUE, SVt_PV);
+                   PL_sortstash = stash;
+               }

PL_firstgv and PL_secondgv would be null if no sort were already hap-
pening, causing this block to be executed.  For a nested sort, this
would only be executed if the nested sort were in a different package
from the outer sort.

Because the value of PL_sortstash was not being restored, this block
would not trigger the second time the outer sort called the inner sort
(in a different package).  This was bug #36430 (a duplicate of #7063).

This was fixed in commit 9850bf21fc4e, which did not explain anything
in its commit message.  A preliminary version of the patch was submit-
ted for review in <20051026173901.GA3105@rpc142.cs.man.ac.uk>, which
mentions that the patch fixes bug #36430.

It fixed the bug by localising the value of PL_sortstash, causing the
if() condition to become redundant, so that was removed.

Now, it happened that that if() condition was the only place that
PL_sortstash was used.  So if we are going to localise PL_firstgv
and PL_secondgv unconditionally when sorting, PL_sortstash serves
no purpose.

While I could restore the if() condition and leave the localisation of
PL_sortstash in place, that would only benefit code that does nested
sort calls in the same package, which is rare, and the resulting
speed-up is barely measurable.

PL_sortstash is referenced by some CPAN modules, so I am taking
the cautious route of leaving it in for now, though the core
doesn’t use it.

8 years ago[perl #24482] Fix sort and require to treat CORE:: as keyword
Father Chrysostomos [Sat, 8 Jun 2013 03:16:23 +0000 (20:16 -0700)]
[perl #24482] Fix sort and require to treat CORE:: as keyword

8 years agoAllow qr/(?[ [a] ])/ interpolation in (?[...])
Father Chrysostomos [Sat, 8 Jun 2013 01:14:43 +0000 (18:14 -0700)]
Allow qr/(?[ [a] ])/ interpolation in (?[...])

Interpolation fails if the interpolated extended character class con-
tains any bracketed character classes itself.

The sizing pass looks for [ and passes control to the regular charac-
ter class parser.  When the charclass is finished, it begins scanning
for [ again.  If it finds ], it assumes it is the end.

That fails with (?[  (?a:(?[  [a]  ]))  ]).  The sizing pass hands
[  [a]  ]... off to the charclass parser, which parses [  [a] and
hands control back to the sizing pass.  It then sees ‘  ]))  ])’,
assumes that the first ]) is the end of the entire construct, so the
main regexp parser sees the parenthesis following and dies.

If we change the sizing pass to look for ?[ we can simply record the
depth (depth++) and then when we see ] decrement the depth or exist
the loop if it is zero.

8 years agoperldiag: Correct descr of ‘Expecting '(?flags:(?[...'’
Father Chrysostomos [Fri, 7 Jun 2013 20:13:46 +0000 (13:13 -0700)]
perldiag: Correct descr of ‘Expecting '(?flags:(?[...'’

I did not realise at first that (?:(?[...])) is forbidden.

8 years agoInclude the Encode extension in the ALL_STATIC build on Win32 for VC++
Steve Hay [Sat, 8 Jun 2013 01:16:17 +0000 (02:16 +0100)]
Include the Encode extension in the ALL_STATIC build on Win32 for VC++

Thanks to Jan Dubois and Nicholas Clark for pointing out that Encode has
subextensions which need statically linking too, and that Configure has
a special case for handling this which we can mimic in config_sh.PL.

Unfortunately, however, while this works for VC++, with MinGW it gives
undefined reference errors to three symbols from Encode/CN.o
(_cp936_encoding, _euc_cn_encoding and MacChineseSimp_encoding) and two
from Encode/JP.o (_cp932_encoding and _euc_jp_encoding), so we must retain
the exclusion on Encode for MinGW for now, much like the Compress/Raw/Bzip2
problem found before. Hopefully these are all fixable soon.

8 years agoInclude the Win32 extension in the ALL_STATIC build on Win32
Steve Hay [Fri, 7 Jun 2013 22:47:12 +0000 (23:47 +0100)]
Include the Win32 extension in the ALL_STATIC build on Win32

Many of Win32's Perl level functions are pre-defined (even without a "use
Win32" statement), while the implementation is in a dynamically linked
module. This is done via the statically linked Win32CORE wrapper that will
load Win32 on demand. The initialization of Win32CORE (init_Win32CORE()) is
called -- dynamically, via GetProcAddress(), since miniperl.exe doesn't
include it -- from Perl_init_os_extras() and normally relies on the DLL's
HANDLE having been set in the DLL_PROCESS_ATTACH case of DllMain() in
perllib.c. We must use a different HANDLE when the functions are located in
perl-static.exe since DllMain() is not called in that case, and, in fact,
it is sensible to consider other parts of DllMain() which
Perl_init_os_extras() might also need to do...

The #ifdef DEFAULT_BINMODE section can be scrapped completely since the
symbol is not defined, never mentioned anywhere else and not documented.
The DisableThreadLibraryCalls() call is not applicable for code that
doesn't reside in a DLL. That just leaves set_w32_module_name(), but that
is not required either, and may actually be redundant in the DllMain() case
too (maybe I will remove it later).

The last-but-one thing to do is to arrange for init_Win32CORE to be
exported from perl-static.exe (as it already is from perl519.dll, courtesy
of makedef.pl) otherwise GetProcAddress() won't find it. I see no harm in
always specifying __declspec(dllexport) in Win32CORE.c (except in one
existing Cygwin case which doesn't want it, which I'm not touching to
minimize regression risk). I thought that the .def file entry written by
makedef.pl for perl519.dll would then become redundant, and whilst the VC++
build worked fine without it, the MinGW build didn't: init_Win32CORE no
longer got exported from perl519.dll, thus breaking the normal build, so
I've therefore left makedef.pl alone.

The very last thing to do in some future change is to improve the
ALL_STATIC build so that Win32 functions like CopyFile() do not go
through Win32CORE's w32_CORE_all forwarding function as they currently do:
it isn't necessary when Win32 is statically linked as well! I will revisit
this part very soon...

Thanks to Jan Dubois and all the others in the following thread for
invaluable assistance in this and other recent changes in this area:
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-06/msg00016.html

8 years agoversion bumps and perldelta for debugger depth
Ricardo Signes [Fri, 7 Jun 2013 15:51:45 +0000 (11:51 -0400)]
version bumps and perldelta for debugger depth

8 years agoadjust $DB::deep from 100 to 1000
Mark Jason Dominus [Fri, 7 Jun 2013 15:42:07 +0000 (11:42 -0400)]
adjust $DB::deep from 100 to 1000

$DB::deep defaults to 100; this means that when the debugger gets 100
levels deep in subroutine calls, it automatically breaks execution.
While this might have been appropriate in 1989, in modern Perl programs,
the debugger might break before the program is even compiled.

This patch adjusts the default value up to 1000.

I was not able to find the default value documented anywhere.

8 years agoStop delete local $ENV{foo} from leaking
Father Chrysostomos [Fri, 7 Jun 2013 15:26:03 +0000 (08:26 -0700)]
Stop delete local $ENV{foo} from leaking

It was only leaking when the env var did not already exist.

The code in question in pp.c:S_do_delete_local was calling hv_delete
to delete the element, which autovivifies, deletes, and returns a mag-
ical mortal for magical hashes.  It was assuming that if a value was
returned the element must have existed, so it was calling SvREFCNT_inc
on the returned mortal to de-mortalize it (since it has to be
restored).  Whether the element had existed previously was already
recorded in a bool named ‘preeminent’ (strange name).  This variable
should be checked before the SvREFCNT_inc.

I found the same bug in the array code path, potentially affecting
@- and @+, so I fixed it.  But I didn’t write a test, as that would
involve a custom regexp engine.

8 years agohv.c: Clarify uvar comment
Father Chrysostomos [Fri, 7 Jun 2013 03:42:30 +0000 (20:42 -0700)]
hv.c: Clarify uvar comment

It was not clear that it referred to uvar magic.

8 years agoDon’t leak when compiling /(?[\d\d])/
Father Chrysostomos [Thu, 6 Jun 2013 21:14:06 +0000 (14:14 -0700)]
Don’t leak when compiling /(?[\d\d])/

The ‘Operand with no preceding operator’ error was leaking the last
two operands.

8 years agoFree operand when encountering unmatched ')' in (?[])
Father Chrysostomos [Thu, 6 Jun 2013 21:07:21 +0000 (14:07 -0700)]
Free operand when encountering unmatched ')' in (?[])

I only need to free the operand (current), not the left-paren token
that turns out not to be a paren (lparen).

For lparen to leak, there would have to be two operands in a row on
the charclass parsing stack, which currently never happens.

8 years agoStop /(?[\p{...}])/ compilation from leaking
Father Chrysostomos [Thu, 6 Jun 2013 20:42:32 +0000 (13:42 -0700)]
Stop /(?[\p{...}])/ compilation from leaking

The swash returned by utf8_heavy.pl was not being freed in the code
path to handle returning character classes to the (?[...]) parser
(when ret_invlist is true).

8 years agoAdd a note to Win32's BUILD_STATIC configuration to include Win32CORE
Steve Hay [Thu, 6 Jun 2013 22:48:56 +0000 (23:48 +0100)]
Add a note to Win32's BUILD_STATIC configuration to include Win32CORE

Win32CORE needs to be included for the on-demand loading of Win32 to work.
(Many of Win32's Perl level functions are pre-defined (even without a "use
Win32" statement), while the implementation is in a dynamically linked
module.)

8 years agoExclude Compress/Raw/Bzip2 from ALL_STATIC extensions for MinGW for now
Steve Hay [Thu, 6 Jun 2013 22:43:33 +0000 (23:43 +0100)]
Exclude Compress/Raw/Bzip2 from ALL_STATIC extensions for MinGW for now

The ALL_STATIC=define build succeeds with VC++, but with MinGW it gives an
error about _BZ2_compressBlock (referenced from bzlib.o) being undefined.
I do not know why, so just exclude this extension from the list for now,
and add a note about it.

8 years agoSimplify recipes for making perl-static.exe on Win32
Steve Hay [Thu, 6 Jun 2013 22:35:55 +0000 (23:35 +0100)]
Simplify recipes for making perl-static.exe on Win32

There is no need to link the static extension libraries as well as the
static perl library because the entire contents of all the static extension
libraries have been put into the static perl library anyway.

Also put the list of objects and libraries which perl.exe and
perl-static.exe link against in the same order as each other, and in both
makefiles, and (in makefile.mk) for both compilers, so that the
similarities and differences are more readily seen.

8 years agoFix creation of libperl519s.a on Win32 with MinGW
Steve Hay [Thu, 6 Jun 2013 22:28:07 +0000 (23:28 +0100)]
Fix creation of libperl519s.a on Win32 with MinGW

The "ar rc" command created an invalid static perl library by putting the
static extension libraries themselves into the library rather than putting
the objects from each static extension library into it as intended (like
the VC++ "link -lib" command does).

We now extract each static extension library's objects into a temporary
directory and put the objects from there into the static perl library.

8 years agoRemove /PDB:NONE linker option from Win32 makefiles
Steve Hay [Thu, 6 Jun 2013 22:14:09 +0000 (23:14 +0100)]
Remove /PDB:NONE linker option from Win32 makefiles

The /PDB linker option syntax changed from /PDB:{filename|NONE} to just
/PDB:filename from VC7 onwards. We do not use /PDB:NONE for most targets
anyway, so just remove it from the one place it is present to avoid
accidentally creating a file called "NONE" with all but VC6.

8 years agoEnsure Win32 [nd]make builds the 'static' target when ALL_STATIC=define
Steve Hay [Thu, 6 Jun 2013 22:05:05 +0000 (23:05 +0100)]
Ensure Win32 [nd]make builds the 'static' target when ALL_STATIC=define

8 years agoStop (?[]) operators from leaking
Father Chrysostomos [Thu, 6 Jun 2013 15:47:31 +0000 (08:47 -0700)]
Stop (?[]) operators from leaking

When a (?[]) extended charclass is compiled, the various operands are
stored as inversion lists in separate SVs and then combined together
into new inversion lists.  The functions that take care of combining
inversion lists only ever free one operand, and sometimes free none.
Most of the operators in (?[]) were trusting the invlist functions to
free everything that was no longer needed, causing (?[]) compilation
to leak invlists.

8 years agoperldiag: Document ‘Expecting '(?flags:(?[...'’
Father Chrysostomos [Thu, 6 Jun 2013 15:17:44 +0000 (08:17 -0700)]
perldiag: Document ‘Expecting '(?flags:(?[...'’

8 years agoperldiag: Clarify why ‘False [] range’ can be F
Father Chrysostomos [Thu, 6 Jun 2013 13:22:45 +0000 (06:22 -0700)]
perldiag: Clarify why ‘False [] range’ can be F

8 years agoMerge remote-tracking branch 'remotes/origin/smoke-me/env-instead-of-echo' into blead
H.Merijn Brand [Thu, 6 Jun 2013 14:18:44 +0000 (16:18 +0200)]
Merge remote-tracking branch 'remotes/origin/smoke-me/env-instead-of-echo' into blead

8 years agoperldiag: Correct severity/category for ‘False [] range’
Father Chrysostomos [Thu, 6 Jun 2013 06:56:52 +0000 (23:56 -0700)]
perldiag: Correct severity/category for ‘False [] range’

This can now be a fatal error or a warning.  diag.t is still not
smart enough to verify this, so it is still in its exception list.

8 years agodiag.t: Don’t confuse the two exception listse
Father Chrysostomos [Thu, 6 Jun 2013 06:44:05 +0000 (23:44 -0700)]
diag.t: Don’t confuse the two exception listse

The second exception list is for things listed in perldiag whose cate-
gories are in need of correction or are too baffling for diag.t to
check correctly (it’s not very smart).

Due to my careless implementation in commit 62f5f54d, the second list
was also treated effectively as an addendum to the first.  Things not
listed in perldiag could be listed in the second exception list and
make tests pass.

8 years agodiag.t: Remove commented obsoleted by 62f5f54dc2d
Father Chrysostomos [Thu, 6 Jun 2013 06:33:35 +0000 (23:33 -0700)]
diag.t: Remove commented obsoleted by 62f5f54dc2d

8 years agoAlphabetize perltrap
Father Chrysostomos [Thu, 6 Jun 2013 05:05:20 +0000 (22:05 -0700)]
Alphabetize perltrap

Before 9b12f83b0b6, the programming languages other than Perl were in
alphabetical order.

8 years agoIn regcomp.c, Set_Node_Cur_Length() uses parse_start, so explicitly pass it.
Nicholas Clark [Wed, 5 Jun 2013 10:15:57 +0000 (12:15 +0200)]
In regcomp.c, Set_Node_Cur_Length() uses parse_start, so explicitly pass it.

The macro Set_Node_Cur_Length() had been referring to the variable
parse_start within its body. This somewhat secret reference is potentially
risky, as it was always taking a parameter node, hence one might assume that
that was all that it used, and change the value stored in parse_start.
(Specifically, one place that assigns RExC_parse - 1 to parse_start, and later
uses parse_start + 1, which looks like an obvious cleanup candidate)

So make parse_start an explicit parameter.

Also, eliminate the never-used macro Set_Cur_Node_Length. This was added as
part of commit fac927409d5ddf11 (April 2001) but never used.

8 years agoIn S_regatom, declare parse_start when RE_TRACK_PATTERN_OFFSETS is defined.
Nicholas Clark [Tue, 4 Jun 2013 15:37:10 +0000 (17:37 +0200)]
In S_regatom, declare parse_start when RE_TRACK_PATTERN_OFFSETS is defined.

Commit 779fedd7c3021f01 (March 2013) moved code which unconditionally used
parse_start into another block. Hence the variable is now only needed when
RE_TRACK_PATTERN_OFFSETS is defined, so wrap its declaration in #ifdef/#endif
to avoid C compiler warnings.

8 years agoDon’t leak the /(?[])/ parsing stack on error
Father Chrysostomos [Thu, 6 Jun 2013 04:40:24 +0000 (21:40 -0700)]
Don’t leak the /(?[])/ parsing stack on error

Instead of creating the parsing stack and then freeing it after pars-
ing the (?[...]) construct (leaking it whenever one of the various
errors scattered throughout the parsing code occurs), mortalise it to
begin with and let the mortals stack take care of it.

8 years agoperldelta for #114576 (XS lvalue subs)
Father Chrysostomos [Wed, 5 Jun 2013 20:00:34 +0000 (13:00 -0700)]
perldelta for #114576 (XS lvalue subs)

8 years agoperldelta: typo
Father Chrysostomos [Wed, 5 Jun 2013 19:57:59 +0000 (12:57 -0700)]
perldelta: typo

8 years agoUpdate CPAN-Meta to CPAN version 2.131560
Chris 'BinGOs' Williams [Wed, 5 Jun 2013 23:39:00 +0000 (00:39 +0100)]
Update CPAN-Meta to CPAN version 2.131560

  [DELTA]

2.131560  2013-06-05 15:26:36 America/New_York

  [DOCUMENTATION]

  - Replaced CPAN::Meta SYNOPSIS with code that actually works

8 years agouse 'env' instead of 'echo' for %ENV tests in magic.t
H.Merijn Brand [Wed, 5 Jun 2013 14:13:34 +0000 (16:13 +0200)]
use 'env' instead of 'echo' for %ENV tests in magic.t

To prevent using weird echo commands (it can be a binary in the $PATH)
or shell quoting (Windows has env too?), use the env command.

The env command showed perfect content on old HP-UX 11.00 where the echo
command usage got it seriously wrong.

8 years agorequire.t: handle parallel runs
David Mitchell [Wed, 5 Jun 2013 10:54:36 +0000 (11:54 +0100)]
require.t: handle parallel runs

There are random smoke failures in this test script, which are consistent
with multiple processes running the same test script in parallel, and
writing/unlinking the same (hard-coded) temp files.

As a temp hack, add a sleep(20) if this looks like its happening,
and see if the smoke issues go away.

8 years agomake some tests TODO under -DPERL_NO_COW
David Mitchell [Wed, 5 Jun 2013 10:24:20 +0000 (11:24 +0100)]
make some tests TODO under -DPERL_NO_COW

Since it's Copy-on-Write that fixed those tests, we expect them to fail
without COW.

8 years agoRemove the unused env parameter from a2p's main, and the associated pragma.
Nicholas Clark [Tue, 4 Jun 2013 12:19:31 +0000 (14:19 +0200)]
Remove the unused env parameter from a2p's main, and the associated pragma.

a2p's main has had the traditional Unix third parameter (env) forever.
Commit 24801a4b9a14a562 in May 2005 increased the strictness of the Tru64
compiler, and added pramgas where necessary to counter its warnings.
However, a2p's main doesn't actually *use* the env parameter, so a better
solution is to remove it. Which means that the pragma can be removed too.

8 years agodtrace.t: Don’t rely on installed strict.pm
Father Chrysostomos [Wed, 5 Jun 2013 06:38:48 +0000 (23:38 -0700)]
dtrace.t: Don’t rely on installed strict.pm

It was failing to load strict.pm if perl had not been installed yet.

8 years ago[perl #118297] Fix interpolating downgraded variables into upgraded regexp
Dagfinn Ilmari Mannsåker [Tue, 4 Jun 2013 17:15:24 +0000 (18:15 +0100)]
[perl #118297] Fix interpolating downgraded variables into upgraded regexp

The code alredy upgraded the pattern if interpolating an upgraded
string into it, but not vice versa.  Just use sv_catsv_nomg() instead
of sv_catpvn_nomg(), so that it can upgrade as necessary.

8 years ago-l $handle warning: globs, iorefs, utf8
Father Chrysostomos [Wed, 5 Jun 2013 01:32:46 +0000 (18:32 -0700)]
-l $handle warning: globs, iorefs, utf8

The warning restored in commit cd22fad3cbcea only applied to globrefs,
not to globs or iorefs.  The warning message was also not utf8-clean.
This commit fixes both.

This resolves ticket #117595.

8 years agoInterix seems to have multi-arch so ask gcc where stuff is
Chris 'BinGOs' Williams [Fri, 10 May 2013 20:16:32 +0000 (21:16 +0100)]
Interix seems to have multi-arch so ask gcc where stuff is

8 years agoremove obsolete STRUCT_MGVTBL_DEFINITION from mg.h
Daniel Dragan [Fri, 29 Mar 2013 21:54:40 +0000 (17:54 -0400)]
remove obsolete STRUCT_MGVTBL_DEFINITION from mg.h

STRUCT_MGVTBL_DEFINITION was added in commit 0f4eea8fa1 in 5.004_67 as
part of ML thread "[PATCH 5.004_67] Fixes for broken MS compiler" and
stopped being used in commit acfe0abced in 5.7.2. STRUCT_MGVTBL_DEFINITION
was used to provide binary compatibility between C++ objs and C structs,
where extra  C++ data was stored with each function * raising the member
size to 16 bytes instead of 4 on a 32 bit build, also see
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/2793a64f-ec09-495c-b995-4f5b98a26321

The define in struct mgvtbl is a left over that wasn't removed. Remove it
to improve code readability.

8 years agoperlipc: remove some confusing text.
Shlomi Fish [Sat, 1 Jun 2013 11:40:30 +0000 (14:40 +0300)]
perlipc: remove some confusing text.

See: https://rt.perl.org/rt3/Ticket/Display.html?id=114444#txn-1220111

8 years ago[perl #115112] avoid repeated calls to path_is_absolute() and rename it
Tony Cook [Sun, 2 Jun 2013 01:33:44 +0000 (11:33 +1000)]
[perl #115112] avoid repeated calls to path_is_absolute() and rename it

A micro-optimization inspired by bulk88's perl #115112.

The original proposal suggested applying a two changes that removed the
duplicate calls, and then explicitly inlined path_is_absolute().

This version removes the duplicate calls, renames the function to better
match it's purpose and asks the compiler to inline it.

8 years agoTypo fix in perlfunc [RT#118093]
Eric Brine [Wed, 22 May 2013 03:15:58 +0000 (20:15 -0700)]
Typo fix in perlfunc [RT#118093]

This addresses an earlier fix which incorrectly changed "syntax fancy" to "fancy fancy" instead of "fancy syntax".

8 years agoStop making assumptions about uids and gids.
Brian Fraser [Thu, 23 May 2013 03:44:15 +0000 (00:44 -0300)]
Stop making assumptions about uids and gids.

The code dealt rather inconsistently with uids and gids. Some
places assumed that they could be safely stored in UVs, others
in IVs, others in ints; All of them should've been using the
macros from config.h instead. Similarly, code that created
SVs or pushed values into the stack was also making incorrect
assumptions -- As a point of reference, only pp_stat did the
right thing:

 #if Uid_t_size > IVSIZE
mPUSHn(PL_statcache.st_uid);
 #else
 #   if Uid_t_sign <= 0
mPUSHi(PL_statcache.st_uid);
 #   else
mPUSHu(PL_statcache.st_uid);
 #   endif
 #endif

The other places were potential bugs, and some were even causing
warnings in some unusual OSs, like haiku or qnx.

This commit ammends the situation by introducing four new macros,
SvUID(), sv_setuid(), SvGID(), and sv_setgid(), and using them
where needed.

8 years ago[perl #117531] Deparse elements of %# correctly
Father Chrysostomos [Tue, 4 Jun 2013 04:57:33 +0000 (21:57 -0700)]
[perl #117531] Deparse elements of %# correctly

They can only be referred to as $# {foo} and ${#}{foo}, not as $#{foo},
as that means $#foo.

8 years agoTraps for the unwary JS programmer (perltrap.pod)
Father Chrysostomos [Tue, 4 Jun 2013 03:48:00 +0000 (20:48 -0700)]
Traps for the unwary JS programmer (perltrap.pod)

This is part of ticket #117507 or #109408, whichever you like.

This incorporates suggestions and corrections from Ronald Kimball and
Tom Christiansen.  Thank them!

8 years agodeparse.t: Fix test count
Father Chrysostomos [Tue, 4 Jun 2013 03:29:54 +0000 (20:29 -0700)]
deparse.t: Fix test count

8 years agoadd a special case for VOS handling of argv[0] in magic.t
Paul Green [Wed, 27 Mar 2013 16:17:53 +0000 (12:17 -0400)]
add a special case for VOS handling of argv[0] in magic.t

8 years agoremove an obsolete special case for VOS handling of permissions in AnyDBM_File.t
Paul Green [Wed, 27 Mar 2013 16:17:08 +0000 (12:17 -0400)]
remove an obsolete special case for VOS handling of permissions in AnyDBM_File.t

8 years agoadd a special case for VOS handling of file position after open in tell.t
Paul Green [Wed, 27 Mar 2013 16:15:40 +0000 (12:15 -0400)]
add a special case for VOS handling of file position after open in tell.t

8 years agoremove an obsolete VOS special case and add a new one in fs.t
Paul Green [Wed, 27 Mar 2013 16:13:47 +0000 (12:13 -0400)]
remove an obsolete VOS special case and add a new one in fs.t

8 years agochange svpeek.t to append the VOS executable suffix to $^X
Paul Green [Wed, 27 Mar 2013 16:12:10 +0000 (12:12 -0400)]
change svpeek.t to append the VOS executable suffix to $^X

8 years agochange DynaLoader.t to know VOS has no libc library
Paul Green [Wed, 27 Mar 2013 16:07:57 +0000 (12:07 -0400)]
change DynaLoader.t to know VOS has no libc library

8 years agoremove obsolete VOS special cases from eu_command.t
Paul Green [Wed, 27 Mar 2013 16:05:01 +0000 (12:05 -0400)]
remove obsolete VOS special cases from eu_command.t

8 years agoAdd Heiko Eissfeldt to AUTHORS
Father Chrysostomos [Tue, 4 Jun 2013 01:33:55 +0000 (18:33 -0700)]
Add Heiko Eissfeldt to AUTHORS

8 years ago[perl #117311] B::Deparse with option -l leaves formfeed characters in its output
hexcoder [Tue, 4 Jun 2013 01:33:12 +0000 (18:33 -0700)]
[perl #117311] B::Deparse with option -l leaves formfeed characters in its output

8 years agoop.h: Corrent comment about entersub strictures
Father Chrysostomos [Sun, 2 Jun 2013 23:33:31 +0000 (16:33 -0700)]
op.h: Corrent comment about entersub strictures

Flag 2 on entersub is HINT_STRICT_REFS, not _SUBS.

8 years agoFix internal inconsistencies in style in utf8.pm docs
Eric Brine [Mon, 3 Jun 2013 17:26:11 +0000 (10:26 -0700)]
Fix internal inconsistencies in style in utf8.pm docs

8 years agoFAIL_OK looks too much like a constant [RT##118279]
Eric Brine [Mon, 3 Jun 2013 17:21:42 +0000 (10:21 -0700)]
FAIL_OK looks too much like a constant [RT##118279]

8 years agoPATCH: Bump Locale-Codes from 3.25 to 3.26
Sullivan Beck [Mon, 3 Jun 2013 15:05:09 +0000 (11:05 -0400)]
PATCH: Bump Locale-Codes from 3.25 to 3.26

I just released Locale-Codes-3.26 which contains the core modules
Locale::Country, Locale::Language, and Locale::Currency.  The patch is
attached to this message.

====
Background:

The core modules Locale::Country, Locale::Language, and Locale::Currency
(all part of the Locale-Codes distribution) should be updated on a
regular basis. They contain "codes" from various internet standards
which change over time.

I plan on releasing new versions at 4 times a year to keep the codes
up-to-date. At this point, I'm not planning on any significant code
changes (other than bug fixes), so the only significant changes
between releases should be to update the codes.

>From a6cfe877326aa21c73be694f3a9d7dbe1f17961b Mon Sep 17 00:00:00 2001
From: Sullivan Beck <sbeck@cpan.org>
Date: Mon, 3 Jun 2013 10:55:38 -0400
Subject: [PATCH] Bump Locale-Codes from 3.25 to 3.26

Signed-off-by: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
8 years agoAdjust documentation for removal of splice warning
Eric Brine [Mon, 3 Jun 2013 04:46:07 +0000 (21:46 -0700)]
Adjust documentation for removal of splice warning

8 years agoavoid undeflow in regex poscache count
David Mitchell [Mon, 3 Jun 2013 10:45:05 +0000 (11:45 +0100)]
avoid undeflow in regex poscache count

reginfo->poscache_iter is used to count down to zero; at zero, the
superlinear cache is enabled; and for values below zero the cache is
tested. After I32_MAX iterations the count might wrap to a positive value
on 32-bit systems. So don't do that.

8 years agoperldelta for 285a3ca13
Tony Cook [Mon, 3 Jun 2013 12:57:28 +0000 (22:57 +1000)]
perldelta for 285a3ca13

8 years ago[perl #118175] avoid making pointers outside of objects
Tony Cook [Mon, 3 Jun 2013 12:28:37 +0000 (22:28 +1000)]
[perl #118175] avoid making pointers outside of objects

In a couple of cases, when strings were allocated above the 2GB line
on 32-bit CPUs, this could cause regexps to act strangely - not matching
or crashing perl.

The final patch in the set prevents pointer creation which the C standard
describes as undefined behaviour, but is typically safe (as long as the
pointer isn't derefed)

8 years ago[perl #118175] avoid making a pointer outside a string
Tony Cook [Sat, 1 Jun 2013 02:33:05 +0000 (12:33 +1000)]
[perl #118175] avoid making a pointer outside a string

Simply adding scan + max causes undefined behaviour per ANSI C if the
result points outside of the object scan points at.

8 years ago[perl #118175] prevent a similar overflow for CANY
Tony Cook [Sat, 1 Jun 2013 01:10:39 +0000 (11:10 +1000)]
[perl #118175] prevent a similar overflow for CANY

8 years ago[perl #118175] prevent a similar overflow for POSIXA
Tony Cook [Sat, 1 Jun 2013 00:54:36 +0000 (10:54 +1000)]
[perl #118175] prevent a similar overflow for POSIXA