platform/upstream/perl.git
10 years agoPOSIX: silence some compiler warnings
David Mitchell [Mon, 18 Nov 2013 15:24:04 +0000 (15:24 +0000)]
POSIX: silence some compiler warnings

10 years agoSDBM_File: fix 'set but not used' warning
David Mitchell [Mon, 18 Nov 2013 15:07:23 +0000 (15:07 +0000)]
SDBM_File: fix 'set but not used' warning

the NEXTKEY() method has a key arg, but sdbm_nextkey() doesn't.
So don't bother mapping the key SV arg to a datum_key type.

10 years agoPerlIO::via: fix compiler warning
David Mitchell [Mon, 18 Nov 2013 14:52:57 +0000 (14:52 +0000)]
PerlIO::via: fix compiler warning

In
    GV *gv = newGVgen(HvNAME_get(s->stash))

HvNAME_get() can return a null value (don't know whether it ever will in
these circumstances), while newGVgen() expects a non-null arg.

So calculate HvNAME_get() first, and bail if it's null.

10 years agoPerlIO::scalar: silence some compiler warnings
David Mitchell [Mon, 18 Nov 2013 14:37:22 +0000 (14:37 +0000)]
PerlIO::scalar: silence some compiler warnings

10 years agoperlhacktips: Two spaces after dots
Father Chrysostomos [Mon, 18 Nov 2013 14:19:33 +0000 (06:19 -0800)]
perlhacktips: Two spaces after dots

It was not consistent throughout.

10 years agoperlhacktips: Fix pod formatting
Father Chrysostomos [Mon, 18 Nov 2013 14:12:03 +0000 (06:12 -0800)]
perlhacktips: Fix pod formatting

10 years agoAdd more examples of perl/gdb usage.
Matthew Horsfall (alh) [Mon, 30 Sep 2013 17:23:22 +0000 (13:23 -0400)]
Add more examples of perl/gdb usage.

Also add doc about gdb's ptype, and make examples more clear.

10 years agoFix ‘panic: memory wrap’ in reg_scan_name
Father Chrysostomos [Mon, 18 Nov 2013 14:01:56 +0000 (06:01 -0800)]
Fix ‘panic: memory wrap’ in reg_scan_name

reg_scan_name was not checking for end-of-string.  If the character it
read were not a word character, it would then increment the current
position (RExC_parse), so that the <-- HERE marker in the error mes-
sage would point to the bad character.

If we try to split a regexp like /(?</ into two pieces when the cur-
rent position is off the end like this:

 ( ? < \0
          ^

then the first ‘half’ of the regexp, before the <-- HERE marker is
"(?<\0" (including the trailing null), and the second ‘half’ is of
negative length.  Negative string lengths are what cause ‘panic: mem-
ory wrap’.

$ ./perl -Ilib -e '/(?</'
panic: memory wrap at -e line 1.

This commit takes advantage of the fact that, ever since 1f4f6bf1,
RExC_parse == name_start has never been true after a call to
reg_scan_name.  This is how reg_scan_name now signals EOS.

10 years agoperldiag: Clarify memory wrap
Father Chrysostomos [Mon, 18 Nov 2013 13:57:50 +0000 (05:57 -0800)]
perldiag: Clarify memory wrap

10 years agoRequire closing paren for (?&...
Father Chrysostomos [Mon, 18 Nov 2013 13:45:19 +0000 (05:45 -0800)]
Require closing paren for (?&...

$ ./perl -Ilib -le 'print "aaz" =~ /(?<a>a)(?&a-z/'
a

(?&name) was actually allowing any non-word character to terminate it.

10 years agoUpdate IPC-Cmd to CPAN version 0.90
Chris 'BinGOs' Williams [Mon, 18 Nov 2013 15:13:01 +0000 (15:13 +0000)]
Update IPC-Cmd to CPAN version 0.90

  [DELTA]

0.90 Mon Nov 18 15:08:15 GMT 2013

  Misc:
  * skip some problematic tests when PERL_CORE

10 years agoperldelta for ff4a442c79
Tony Cook [Mon, 18 Nov 2013 06:01:07 +0000 (17:01 +1100)]
perldelta for ff4a442c79

10 years agoperldelta for fa0789a790
Tony Cook [Mon, 18 Nov 2013 05:53:46 +0000 (16:53 +1100)]
perldelta for fa0789a790

10 years ago[perl #120535] Add UTF8 flag to B::HV->ARRAY keys
Tony Cook [Mon, 18 Nov 2013 05:44:40 +0000 (16:44 +1100)]
[perl #120535] Add UTF8 flag to B::HV->ARRAY keys

10 years agoun-TODO the test for 120535, Reini's patch fixes it
Tony Cook [Mon, 18 Nov 2013 04:20:16 +0000 (15:20 +1100)]
un-TODO the test for 120535, Reini's patch fixes it

10 years agoAdd UTF8 flag to keys returned by B::HV->ARRAY
Reini Urban [Wed, 13 Nov 2013 19:18:09 +0000 (13:18 -0600)]
Add UTF8 flag to keys returned by B::HV->ARRAY

hv_iternextsv() ignores the HEK flags, but we do care about the UTF8 flag
at least when returning hash keys from B::HV->ARRAY

10 years agoTODO test for 120535
Tony Cook [Mon, 18 Nov 2013 04:16:31 +0000 (15:16 +1100)]
TODO test for 120535

10 years agofix expected failure text for new croak.t test
Tony Cook [Mon, 18 Nov 2013 00:00:17 +0000 (11:00 +1100)]
fix expected failure text for new croak.t test

10 years ago[Merge] perldiag stuff
Father Chrysostomos [Sun, 17 Nov 2013 21:09:26 +0000 (13:09 -0800)]
[Merge] perldiag stuff

I noticed that some entries in perldiag had (F ...) with warnings
categories.  Those categories apply only to warnings, not to
fatal errors.

So I looked to see why diag.t was not already catching it, since I
thought I had programmed it to.

It turned out that it was skipping any function calls that lacked
aTHX_, which included yyerror and anything with _nocontext.

So I fixed that and got pages and pages of failures, unsurprisingly.

I went through, fixing them, and inevitably tweaking other things.

In one case, I even changed the message output, removing an extraneous
dot before ‘at file line 24’.

10 years agoperldiag: Don’t let <-- HERE be wrapped
Father Chrysostomos [Sun, 17 Nov 2013 19:45:33 +0000 (11:45 -0800)]
perldiag: Don’t let <-- HERE be wrapped

The meaning is much clearer if the <--
HERE marker doesn’t wrap like that.

10 years agoperldiag: Remove categories from fatal errors
Father Chrysostomos [Sun, 17 Nov 2013 14:44:05 +0000 (06:44 -0800)]
perldiag: Remove categories from fatal errors

These are *warnings* categories, so they don’t apply here.

10 years agodiag.t: Fix copy-and-paste error in os2 exception
Father Chrysostomos [Sun, 17 Nov 2013 14:42:45 +0000 (06:42 -0800)]
diag.t: Fix copy-and-paste error in os2 exception

10 years agodiag.t: Don’t check ‘calls’ in column 0
Father Chrysostomos [Sun, 17 Nov 2013 14:40:14 +0000 (06:40 -0800)]
diag.t: Don’t check ‘calls’ in column 0

because they may be function declarations instead.  It was getting
confused by win32_croak_not_implemented, which does not have ");"
in it before the first string.

10 years agodiag.t: More win32 exceptions
Father Chrysostomos [Sun, 17 Nov 2013 14:39:36 +0000 (06:39 -0800)]
diag.t: More win32 exceptions

10 years agodiag.t: Support multiline perldiag entries better
Father Chrysostomos [Sun, 17 Nov 2013 14:32:02 +0000 (06:32 -0800)]
diag.t: Support multiline perldiag entries better

I.e., don’t require a space before the newline.

10 years agodiag.t: Let diag.t be run on specific source files
Father Chrysostomos [Sun, 17 Nov 2013 14:29:37 +0000 (06:29 -0800)]
diag.t: Let diag.t be run on specific source files

./perl -Ilib t/porting/diag.t regcomp.c

will now run it just on regcomp.c.

10 years agodiag.t: Another exception
Father Chrysostomos [Sun, 17 Nov 2013 14:23:07 +0000 (06:23 -0800)]
diag.t: Another exception

10 years agodiag.t: Skip x2p
Father Chrysostomos [Sun, 17 Nov 2013 14:22:24 +0000 (06:22 -0800)]
diag.t: Skip x2p

10 years agodiag.t: win32 exceptions
Father Chrysostomos [Sun, 17 Nov 2013 14:22:07 +0000 (06:22 -0800)]
diag.t: win32 exceptions

10 years agodiag.t: Support win32_croak_not_implemented
Father Chrysostomos [Sun, 17 Nov 2013 14:18:12 +0000 (06:18 -0800)]
diag.t: Support win32_croak_not_implemented

10 years agodiag.t: Another exception
Father Chrysostomos [Sun, 17 Nov 2013 14:17:58 +0000 (06:17 -0800)]
diag.t: Another exception

10 years agoSprinkle diag_listed_as
Father Chrysostomos [Sun, 17 Nov 2013 14:15:08 +0000 (06:15 -0800)]
Sprinkle diag_listed_as

10 years agoRemove extraneous dot from ‘Missing right brace...’
Father Chrysostomos [Sun, 17 Nov 2013 14:10:40 +0000 (06:10 -0800)]
Remove extraneous dot from ‘Missing right brace...’

$ ./perl -Ilib -e '/\N{/'
Missing right brace on \N{} or unescaped left brace after \N. at -e line 1, within pattern
Execution of -e aborted due to compilation errors.

That dot before ‘at -e’ is confusing.

10 years agoperldiag: Clarify an entry
Father Chrysostomos [Sun, 17 Nov 2013 14:03:57 +0000 (06:03 -0800)]
perldiag: Clarify an entry

‘5.12’ is meaningful to insiders, but it may not be understood by
readers in general.

10 years agoperldiag: Document ‘\N{} in character class restricted...’
Father Chrysostomos [Sun, 17 Nov 2013 13:58:08 +0000 (05:58 -0800)]
perldiag: Document ‘\N{} in character class restricted...’

10 years agoperldiag: Document ‘Zero length \N{}’
Father Chrysostomos [Sun, 17 Nov 2013 13:46:15 +0000 (05:46 -0800)]
perldiag: Document ‘Zero length \N{}’

10 years agoperldiag: Miscapitalisation; clarity
Father Chrysostomos [Sun, 17 Nov 2013 13:38:07 +0000 (05:38 -0800)]
perldiag: Miscapitalisation; clarity

10 years agoperldiag: Clean up ‘Sequence (...’ messages
Father Chrysostomos [Sun, 17 Nov 2013 13:32:45 +0000 (05:32 -0800)]
perldiag: Clean up ‘Sequence (...’ messages

Make sure they are all documented.  Sprinkle diag_listed_as where
appropriate.

10 years agoperldiag: Reword an entry slightly
Father Chrysostomos [Sun, 17 Nov 2013 06:25:32 +0000 (22:25 -0800)]
perldiag: Reword an entry slightly

to make it easier to understand

10 years agoperldiag: Add some ‘in regex’ variants
Father Chrysostomos [Sun, 17 Nov 2013 06:09:48 +0000 (22:09 -0800)]
perldiag: Add some ‘in regex’ variants

10 years agodiag.t: Fix FAIL and vFAIL support
Father Chrysostomos [Sun, 17 Nov 2013 06:02:16 +0000 (22:02 -0800)]
diag.t: Fix FAIL and vFAIL support

Until recently, it was treating them like Perl_croak et al., expecting
there to be an aTHX_.

Now that I fixed that, it turns out that FAIL and vFAIL (which were
being ignored, since all the calls lacked aTHX_) never worked anyway.

If they are matched by $source_msg_call_re, they end up in the wrong
if/else branch; namely, the one for handling packWARN, and they skip
over the one for tacking ‘in regex’ on to the end of the message.

10 years agodiag.t: Exceptions from plan9.c
Father Chrysostomos [Sun, 17 Nov 2013 05:49:06 +0000 (21:49 -0800)]
diag.t: Exceptions from plan9.c

10 years agoperldiag: Document ‘Don't know how to get file name’
Father Chrysostomos [Sun, 17 Nov 2013 05:45:30 +0000 (21:45 -0800)]
perldiag: Document ‘Don't know how to get file name’

10 years agoperldiag: Update Assertion to match reality
Father Chrysostomos [Sun, 17 Nov 2013 05:35:19 +0000 (21:35 -0800)]
perldiag: Update Assertion to match reality

10 years agodiag.t: Exceptions, mostly from os2.c
Father Chrysostomos [Sun, 17 Nov 2013 02:15:59 +0000 (18:15 -0800)]
diag.t: Exceptions, mostly from os2.c

10 years agodiag.t: gv_override is not a croak function
Father Chrysostomos [Sat, 16 Nov 2013 23:59:23 +0000 (15:59 -0800)]
diag.t: gv_override is not a croak function

10 years agoop.c: diag_listed_as for Using !~ with %s
Father Chrysostomos [Sat, 16 Nov 2013 23:58:20 +0000 (15:58 -0800)]
op.c: diag_listed_as for Using !~ with %s

10 years agoStop diag.t from skipping yyerror messages
Father Chrysostomos [Sat, 16 Nov 2013 23:55:30 +0000 (15:55 -0800)]
Stop diag.t from skipping yyerror messages

yyerror does not take aTHX_, but diag.t was expecting aTHX_ on all
warn/croak calls.

Yes, this causes massive failures.

10 years agoperldiag: \%d better written as $%d
Father Chrysostomos [Sat, 16 Nov 2013 23:12:58 +0000 (15:12 -0800)]
perldiag: \%d better written as $%d

splain can’t necessarily find it if we hard-code the number:

$ ./perl -Ilib -Mdiagnostics -we '()="" =~ s/()()/\1/r'
\1 better written as $1 at -e line 1 (#1)
    (W syntax) Outside of patterns, backreferences live on as variables.
    The use of backslashes is grandfathered on the right-hand side of a
    substitution, but stylistically it's better to use the variable form
    because other Perl programmers will expect it, and it works better if
    there are more than 9 backreferences.

$ ./perl -Ilib -Mdiagnostics -we '()="" =~ s/()()/\2/r'
\2 better written as $2 at -e line 1.
$

%d is more intuitive than %c here, so I used %d in the pod instead of
copying the C code that generates it.

10 years agoperldiag: rewrap an entry for better splain output
Father Chrysostomos [Sat, 16 Nov 2013 23:07:51 +0000 (15:07 -0800)]
perldiag: rewrap an entry for better splain output

10 years agoFix POD formatting error.
James E Keenan [Sun, 17 Nov 2013 15:58:07 +0000 (16:58 +0100)]
Fix POD formatting error.

10 years agoperldelta addition for the previous commit.
James E Keenan [Sun, 17 Nov 2013 14:27:14 +0000 (15:27 +0100)]
perldelta addition for the previous commit.

10 years agoConvert to using Test::More. Provide each test with a description.
James E Keenan [Mon, 11 Nov 2013 20:11:14 +0000 (21:11 +0100)]
Convert to using Test::More. Provide each test with a description.

For: RT #120503.  This entailed:

Replacing each instance of Check() and CheckDie() with appropriate
Test::More functions.

Replacing MkDir() and touch() with mkdir_ok() and create_file_ok() to
create a more Test::More-ish interface; create symlink_ok() to handle
similar circumstances.

Providing those three wrapper subroutines with default descriptions,
but allowing a custom description to be passed as an argument.

Highlighting more important unit tests found at the end of subsections
and blocks by prepending 'COMPLETE:' to their descriptions.

More inline comments to guide future maintainers.

Some repositioning of code in order to narrow the scope of variables.
Replacement of hard tabs with spaces; some regularization of indents
and other code tidying.

No tests were added or removed, so the planned number of tests on a
given platform will be unchanged.

TODO:

Some descriptions still need improvement.

There are quite a few File-Find features mentioned in the POD which
are not referenced at all in this test file.  They need to have new
tests written for them.

Coverage analysis.

10 years agoperldelta for the previous commit
Father Chrysostomos [Sat, 16 Nov 2013 14:52:26 +0000 (06:52 -0800)]
perldelta for the previous commit

10 years agoFix memory leak with recursive sub redefinition
Father Chrysostomos [Sat, 16 Nov 2013 14:50:49 +0000 (06:50 -0800)]
Fix memory leak with recursive sub redefinition

See the thread starting at
<20131115042923.7514.qmail@lists-nntp.develooper.com>.

Commits 7004ee4937 and a61818571 changed subroutine redefinition to
null the GvCV slot before freeing the CV, so that destructors won’t
see GvCV without a reference count.  That turns a double free into a
memory leak.

Kent Fredric explains it nice and clearly:

> sub foo{}   # A
> bless \&foo;
> DESTROY { *foo = sub {}  # C }
> eval "sub foo{} "; # B
>
> Previous behaviour was:
>
> B replaces A, triggers DESTROY, which triggers C replacing A, and this
> invoked a double free, because C , triggering the removal of A,
> happened while A still existed ( ?? )
>
> So the change fixes this, so that A is removed from the symbol table
> before DESTROY triggers , so that C is creating a "new" symbol,
> effectively, and the problem is that C is then clobbered by the B
> replacing the slot, after the DESTROY.

So C leaks.

This commit fixes it by changing the SvREFCNT_dec into SAVEFREESV,
essentially delaying the DESTROY until after the subroutine redefini-
tion is complete.

This does mean that C is what ends up in the glob afterwards; but as
long as perl’s own bookkeeping is thrown off, we can leave it to the
user (the Perl programmer) to handle the consequences of naughty
destructors.

10 years agogv.c: Remove redundant mro_method_changed_in()
Father Chrysostomos [Sat, 16 Nov 2013 13:18:59 +0000 (05:18 -0800)]
gv.c: Remove redundant mro_method_changed_in()

Core subs are already accounted for by method lookup, so vivifying
them does not change what gets inherited.  Hence, there is no need
to flush caches here.

10 years agoUnwrap a perldiag entry for better splain output
Father Chrysostomos [Sat, 16 Nov 2013 05:40:45 +0000 (21:40 -0800)]
Unwrap a perldiag entry for better splain output

Before:

$ ./perl -Ilib -Mdiagnostics -e 'warn "Missing '\'']'\'' in prototype for %s : %s"'
Missing ']' in prototype for %s : %s at -e line 1 (#1)
    (W illegalproto) A grouping was started with [ but never closed with
    ].

After:

$ ./perl -Ilib -Mdiagnostics -e 'warn "Missing '\'']'\'' in prototype for %s : %s"'
Missing ']' in prototype for %s : %s at -e line 1 (#1)
    (W illegalproto) A grouping was started with [ but never closed with ].

10 years agoperldiag: ‘my sub’ is no longer ‘reserved’ syntax
Father Chrysostomos [Sat, 16 Nov 2013 05:38:43 +0000 (21:38 -0800)]
perldiag: ‘my sub’ is no longer ‘reserved’ syntax

10 years agoAlphabetise perldiag
Father Chrysostomos [Sat, 16 Nov 2013 05:35:04 +0000 (21:35 -0800)]
Alphabetise perldiag

10 years agoperldiag: remove space from otherwise blank line
Father Chrysostomos [Sat, 16 Nov 2013 05:35:46 +0000 (21:35 -0800)]
perldiag: remove space from otherwise blank line

This enables splain to find the following entry.

10 years agoRevert "make perl core quiet under -Wfloat-equal"
David Mitchell [Sat, 16 Nov 2013 00:01:32 +0000 (00:01 +0000)]
Revert "make perl core quiet under -Wfloat-equal"

A suggested way of avoiding the the warning on nv1 != nv2
by replacing it with (nv1 < nv2 || nv1 > nv2), has too many issues
with NaN.  [perl #120538].

I haven't found any other way of selectively disabling the warning,
so for now I'm just reverting the whole commit.

This reverts commit c279c4550ce59702722d0921739b1a1b92701b0d.

10 years agoUpdate DB_File to CPAN version 1.831
Chris 'BinGOs' Williams [Fri, 15 Nov 2013 23:03:14 +0000 (23:03 +0000)]
Update DB_File to CPAN version 1.831

  [DELTA]

1.831 15 November 2013

   * C99 comment is a nogo
     RT #90383

10 years agoUpdate IPC-Cmd to CPAN version 0.88
Chris 'BinGOs' Williams [Fri, 15 Nov 2013 14:56:16 +0000 (14:56 +0000)]
Update IPC-Cmd to CPAN version 0.88

  [DELTA]

  0.88 Fri Nov 15 14:44:03 GMT 2013

    Misc:
    * skip some problematic tests on Cygwin

10 years ago[perl #120544] fix "goto" around var init error in av_extend_guts
Daniel Dragan [Fri, 15 Nov 2013 08:21:53 +0000 (03:21 -0500)]
[perl #120544] fix "goto" around var init error in av_extend_guts

This fixes a Win32 Visual C 6 in C++ mode syntax error. See #120544 for
the details.

10 years agoperldelta for e68dd03a55
Father Chrysostomos [Fri, 15 Nov 2013 13:31:22 +0000 (05:31 -0800)]
perldelta for e68dd03a55

10 years agoperldelta for c5f75dbad5e3
Father Chrysostomos [Fri, 15 Nov 2013 13:28:24 +0000 (05:28 -0800)]
perldelta for c5f75dbad5e3

10 years agoIncrease $fields::VERSION to 2.17
Father Chrysostomos [Fri, 15 Nov 2013 13:04:39 +0000 (05:04 -0800)]
Increase $fields::VERSION to 2.17

10 years agoRevamp fields documentation
Father Chrysostomos [Fri, 15 Nov 2013 06:13:45 +0000 (22:13 -0800)]
Revamp fields documentation

• Actually give an example of a typed lexical.
• Also show the syntax parenthetically in the pod, since the phrase
 ‘typed lexical’ is not exactly well known.
• Don’t use dev version numbers.
• Don’t talk about pseudo-hashes so pervasively, as the fact that they
  are used is more an implementation detail now than a feature (except
  for phash).
• If we talk about restricted hashes, we should link to Hash::Util.
• -w is not the only way to turn warnings on.

Also mention in perlfunc that ‘my __PACKAGE__’ and ‘my CONSTANT’ work,
so that the only mentions are not in perl561delta and Lexical::Types.

10 years agoperldelta for 7004ee4937 and a618185710
Father Chrysostomos [Fri, 15 Nov 2013 04:30:30 +0000 (20:30 -0800)]
perldelta for 7004ee4937 and a618185710

10 years agoperldelta for 4571f4a728 and, of course, bc81b34d0e
Father Chrysostomos [Fri, 15 Nov 2013 01:53:02 +0000 (17:53 -0800)]
perldelta for 4571f4a728 and, of course, bc81b34d0e

4571f4a728 alone made things worse, causing a double free. :-)

10 years agoAnother perldelta to-do
Father Chrysostomos [Fri, 15 Nov 2013 01:51:04 +0000 (17:51 -0800)]
Another perldelta to-do

I’m sure Dave Mitchell can explain this better than I.

10 years ago[perl #120463] s/// and tr/// with wide delimiters
Father Chrysostomos [Thu, 14 Nov 2013 22:29:51 +0000 (14:29 -0800)]
[perl #120463] s/// and tr/// with wide delimiters

$ perl -Mutf8 -e 's αaαα'
Substitution replacement not terminated at -e line 1.

What is happening is that the first scan goes past the delimiter at
the end of the pattern.  Then a single byte is compared (the previous
character against the first byte of the opening delimiter) to see
whether the parser needs to step back one byte before scanning the
second part.

That means you can do the equivalent of s/foo/|bar|g if / is replaced
with a wide character:

$ perl -l -Mutf8 -e '$_ = "a";  s αaα|b|; print'
b

This commit fixes it by giving toke.c:S_scan_str an extra parameter,
so it can tell the callers that need this (scan_subst and scan_trans)
where to start scanning the replacement.

10 years agoAdd Synology instructions
H.Merijn Brand [Thu, 14 Nov 2013 17:38:38 +0000 (18:38 +0100)]
Add Synology instructions

10 years agomove DEBUGGING section after includes in regexec.c.
Craig A. Berry [Thu, 14 Nov 2013 14:08:34 +0000 (08:08 -0600)]
move DEBUGGING section after includes in regexec.c.

7b75fc16a59 added #ifdef DEBUGGING around a declaration, but that
section of code was before any includes, and (on VMS anyway),
DEBUGGING is defined in config.h, not on the command line.

So just move that declaration after the includes, which is a more
normal way to do things anyway.

10 years agoDon’t skip t/re/reg_eval_scope.t under miniperl
Father Chrysostomos [Thu, 14 Nov 2013 13:26:26 +0000 (05:26 -0800)]
Don’t skip t/re/reg_eval_scope.t under miniperl

re.pm doesn’t load its C code under miniperl, and it’s not needed anyway
here, since we are just setting hints.

10 years agosv.c apidocs: SV_NOSTEAL, not NOSTEAL
Father Chrysostomos [Wed, 13 Nov 2013 14:05:21 +0000 (06:05 -0800)]
sv.c apidocs: SV_NOSTEAL, not NOSTEAL

NOSTEAL is nonexistent.  While abbreviating constants may be fine for
comments, using such forms in API documentation may be less than
helpful.

10 years agoconstant.pm: Consistent spaces after dots in pod
Father Chrysostomos [Wed, 13 Nov 2013 13:54:01 +0000 (05:54 -0800)]
constant.pm: Consistent spaces after dots in pod

It was inconsistent throughout.

10 years agoIncrease $constant::VERSION to 1.29
Father Chrysostomos [Wed, 13 Nov 2013 13:33:00 +0000 (05:33 -0800)]
Increase $constant::VERSION to 1.29

10 years agoCompile-time checking for %$obj{"key"} under ‘use fields’
Father Chrysostomos [Tue, 12 Nov 2013 14:13:44 +0000 (06:13 -0800)]
Compile-time checking for %$obj{"key"} under ‘use fields’

This single line of code also gives us shared hash key optimisa-
tions for free.

10 years agoFix bad read in gp_free introduced by 4571f4a72
Father Chrysostomos [Thu, 14 Nov 2013 13:18:00 +0000 (05:18 -0800)]
Fix bad read in gp_free introduced by 4571f4a72

4571f4a72 attempted to fix this:

$ ./perl -Ilib -e 'sub foo{} bless \&foo; DESTROY { undef *foo } undef *foo'
Attempt to free unreferenced glob pointers, Perl interpreter: 0x7fd6a3803200 at -e line 1.

by lowering the refcount of the gp only after freeing the contents.

But what was missing was a check at the end to make sure the refcount
was not already 0.

In fact, that can’t work either, as, if the refcount has gone down
to 0 while freeing the contents of the gp, we will be reading
freed memory.

In an attempt to implement what my half-baked idea was meant to do,
I thought of incrementing the reference count before freeing the
entries, and then checking it afterwards, but that would cause an
‘undef *foo’ during that to null the gp slot of the gv and replace it
with a new one.  In the mean time, gp_free is only freeing the old gp
and the new gp will leak when it sets GvGP to 0.

I thought of detaching the gp from the gv completely before freeing
its entries, but most code doesn’t expect to see typeglobs with no gp.
GvSV will crash.

I nearly concluded that the only approach I could use was to revert
4571f4a72 and simply extirpate that warning.  As far as I can tell, it
only comes up with recursive gp_free calls.  However, in those cases,
simply returning will cause a memory leak, as pp_undef will give the
gv a new gp, and the outer gp_free call, when it finishes, will set
the gv’s gp slot to null, overwriting what pp_undef put there (a vari-
ation of the leak above).

So, the final solution is for gp_free to re-read the GvGP value each
time it loops, freeing entries.  The reference count will continue to
be decremented at the end of the function, as in 4571f4a72.  That will
prevent any bad reads.  If pp_undef has reallocated the gp in the mean
time, we will simply start using the new one.  We need an extra refer-
ence count check at the end, in case a destructor does glob assignment
and causes the gp to be shared.

Ideally this should fix the recent build errors.  (See
<20131113045538.GA18816@mars.tony.develop-help.com>.)  I tried it
under valgrind on dromedary both before and after the patch, and the
bad reads went away.

10 years agoCompliance: Mixed declarations not allowed in some pre-C99 compilers
H.Merijn Brand [Thu, 14 Nov 2013 12:33:12 +0000 (13:33 +0100)]
Compliance: Mixed declarations not allowed in some pre-C99 compilers

10 years agoDynaloader: fix build issue
David Mitchell [Thu, 14 Nov 2013 12:45:44 +0000 (12:45 +0000)]
Dynaloader: fix build issue

My commit from yesterday, 860b3d937d9b004a7de4b684765ab75006c71f00,
inadvertently included c99-ish mixed declarations and code.

10 years agoNO C99 comments, please!
H.Merijn Brand [Thu, 14 Nov 2013 11:53:03 +0000 (12:53 +0100)]
NO C99 comments, please!

10 years ago[PATCH] Upgrade to threads::shared 1.45
Jerry D. Hedden [Wed, 13 Nov 2013 19:31:38 +0000 (19:31 +0000)]
[PATCH] Upgrade to threads::shared 1.45

Signed-off-by: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
10 years agoOpcode: fix 'null argument' warning
David Mitchell [Wed, 13 Nov 2013 17:30:10 +0000 (17:30 +0000)]
Opcode: fix 'null argument' warning

HvNAME_get() can return NULL, and strNE() wants non-null args.

[
As a side note: on debugging builds this line

    if (strNE(HvNAME_get(hv),"main")) {

macro-expands into an 18,000 character line (!) due to the fact that
HvNAME_get() is quite a big expansion under debugging, and strNE expands to
strlen, which under gcc expands to a huge macro (which is mainly lots of
different compile-time alternatives depending on which of its args are
constants), that references its args several times.
]

10 years agoIO.xs: fix compiler warning
David Mitchell [Wed, 13 Nov 2013 16:48:11 +0000 (16:48 +0000)]
IO.xs: fix compiler warning

PerlIO_unread() returns SSize_t, although from its sparse documentation
it doesn't seem that it would ever return a negative value. So cast away
the 'comparison between signed and unsigned integer' warning.

10 years agoFile::Glob: fix warnings and non-\0-ended strings
David Mitchell [Wed, 13 Nov 2013 15:01:40 +0000 (15:01 +0000)]
File::Glob: fix warnings and non-\0-ended strings

The lower levels of File::Glob expect null-terminated strings, while
the higher levels do s = SvPV(sv,len) and pass the len. Ease the impedance
mismatch by ensuring that s[len] is always \0. Most perl SVs will already
have that \0 anyway, so in practice this hasn't been an issue.

It also ignores the utf8-ness of the string. I've kept that as-is (too big
a can of works to open for now), but I've fixed the 'is_utf8 var not used'
warning and added an XXX comment instead.

10 years agoFile::Glob: silence some compiler warnings
David Mitchell [Wed, 13 Nov 2013 12:33:40 +0000 (12:33 +0000)]
File::Glob: silence some compiler warnings

In bsd_glob.c, there are nested set of functions glob0(), glob1() etc,
which among their parameters pass a pointer to a compiled pattern, and also
to its end. It turns out the end pointer isn't usually used, since the
pattern is usually scanned for BG_EOS instead. Also, glob3() is
passed two pattern ranges, both within the same pattern, and both with
the same pointer to the end of the pattern buffer. Since both end pointers
are the same, eliminate one of them. This removed an unused var compiler
warning. Use the remaining end pointer in the glob*() functions to add
assertions that we haven't fallen off the end of the buffer.

Finally, ARG_MAX may be signed.

10 years agopodcheck: Remove workaround no longer needed
Karl Williamson [Wed, 13 Nov 2013 17:25:57 +0000 (10:25 -0700)]
podcheck: Remove workaround no longer needed

The bug this worked around has been fixed by
406e3fef7f4bebd2003087bce74d22303981ac48

10 years agoDevel::Peek: fix some compiler warnings
David Mitchell [Tue, 12 Nov 2013 16:11:33 +0000 (16:11 +0000)]
Devel::Peek: fix some compiler warnings

10 years agoarybase: silence some compiler warnings
David Mitchell [Tue, 12 Nov 2013 16:02:12 +0000 (16:02 +0000)]
arybase: silence some compiler warnings

some of the static functions in  ptable.h are unused. It looks
like ptable.h has been written to be more general-purpose and reusable,
but at the moment its only used in one place, so '#if 0' the unused
functions for now, to shut up the compiler..

10 years agoFile-DosGlob: silence some compiler warnings
David Mitchell [Tue, 12 Nov 2013 16:00:35 +0000 (16:00 +0000)]
File-DosGlob: silence some compiler warnings

10 years agoB: silence some compiler warnings
David Mitchell [Tue, 12 Nov 2013 15:55:38 +0000 (15:55 +0000)]
B: silence some compiler warnings

The renaming of the 'form' arg to 'format' is due to form being #deffed to
Perl_form() or similar.

Some of the unused vars were due to things like BmPREVIOUS() being #deffed
to 0 in recent builds.

The pad ones were due to the PADOFFSET type being used to index a pad
*list*, not a pad - that's SSize_t.

10 years agoDynaLoader: silence some compiler warnings
David Mitchell [Tue, 12 Nov 2013 15:54:40 +0000 (15:54 +0000)]
DynaLoader: silence some compiler warnings

10 years agosilence some compiler warnings
David Mitchell [Tue, 12 Nov 2013 15:51:21 +0000 (15:51 +0000)]
silence some compiler warnings

Actually, most of this commit is adding (void) to various function returns
where we know its ok to ignore the return value. This doesn't actually
silence the -Wunused-result warning (thanks a bundle gcc), but at least
it marks our intentions.

10 years agofix definition of GvFILEGV()
David Mitchell [Tue, 12 Nov 2013 15:39:04 +0000 (15:39 +0000)]
fix definition of GvFILEGV()

It was:

    #define GvFILE(gv)   (GvFILE_HEK(gv) ? HEK_KEY(GvFILE_HEK(gv)) : NULL)
    #define GvFILEGV(gv) (gv_fetchfile(GvFILE(gv)))

which is a problem, since gv_fetchfile() doesn't accept a non-null
argument. Change it so that the (cond ? foo : NULL) thing is outside
gv_fetchfile(). This is all a bit academic since GvFILE_HEK should never
be null, but it at least it shuts up a compiler warning.

10 years agoUpdate Test-Harness to CPAN version 3.30
Chris 'BinGOs' Williams [Wed, 13 Nov 2013 00:33:27 +0000 (00:33 +0000)]
Update Test-Harness to CPAN version 3.30

  [DELTA]

3.30    2013-11-12
        - Fix missing parent prereq in META.{yml,json} and NotBuild.PL
          (Dagfinn Ilmari Mannsåker, #89650)
        - Respect PERL5LIB in tainting source handler test (Dagfinn Ilmari Mannsåker,
          Leon Timmermans)
        - Use base instead of parent:

          This dist is used for testing all other modules, so it should avoid
          having any non-core prerequisites.  Having parent as a prereq leads to a
          circular dependency of parent -> Test::More -> Test::Harness. (Graham Knop)
        - Various POD fixes (Nathan Gary Glenn)
        - Don't localize all of %ENV in harness.t (Craig Berry)
        - Give TAP::Harness::Beyond a unique NAME (Leon Timmermans)

10 years agoAnother perldelta to-do
Father Chrysostomos [Tue, 12 Nov 2013 22:45:39 +0000 (14:45 -0800)]
Another perldelta to-do

10 years agoperldelta for 93860275f3
Father Chrysostomos [Tue, 12 Nov 2013 22:44:47 +0000 (14:44 -0800)]
perldelta for 93860275f3

10 years agoperldelta for 84971b2da4
Father Chrysostomos [Tue, 12 Nov 2013 22:43:15 +0000 (14:43 -0800)]
perldelta for 84971b2da4