platform/upstream/perl.git
12 years agoCall FETCH once when chomping a tied ref
Father Chrysostomos [Wed, 23 Nov 2011 21:29:48 +0000 (13:29 -0800)]
Call FETCH once when chomping a tied ref

12 years agopp.c: Remove useless read-only check from S_do_chomp
Father Chrysostomos [Wed, 23 Nov 2011 21:11:48 +0000 (13:11 -0800)]
pp.c: Remove useless read-only check from S_do_chomp

After sv_force_normal_flags, the scalar will no longer be read-only,
except in those cases where sv_force_normal_flags croaks.  So this
check will never be true when SvFAKE was true.

12 years agoCall FETCH once for $tied_ref =~ y/a/b/
Father Chrysostomos [Wed, 23 Nov 2011 21:03:06 +0000 (13:03 -0800)]
Call FETCH once for $tied_ref =~ y/a/b/

12 years agoIncrease $IO::File::VERSION to 1.16
Father Chrysostomos [Wed, 23 Nov 2011 20:52:33 +0000 (12:52 -0800)]
Increase $IO::File::VERSION to 1.16

12 years agoRemove ‘use File::Spec’ from IO::File
Father Chrysostomos [Wed, 23 Nov 2011 20:52:20 +0000 (12:52 -0800)]
Remove ‘use File::Spec’ from IO::File

It is not using it any more.

12 years ago__SUB__ should warn in void context
Father Chrysostomos [Wed, 23 Nov 2011 20:50:38 +0000 (12:50 -0800)]
__SUB__ should warn in void context

12 years agoUse correct err msg in XS version check
Father Chrysostomos [Wed, 23 Nov 2011 20:47:50 +0000 (12:47 -0800)]
Use correct err msg in XS version check

When an XS module’s version is checked when it is loading, the string
"version" should be treated the same way as "versions" and emit the
‘Invalid version format’ error, instead of being treated as a version
object at first and then rejected by the validator with the ‘Invalid
version object’ error.

See also perl #102586.

12 years agoRemove $SIG{__WARN__} from XSLoader.t
Father Chrysostomos [Wed, 23 Nov 2011 20:34:49 +0000 (12:34 -0800)]
Remove $SIG{__WARN__} from XSLoader.t

Nothing is using the results of this handler any more.

12 years agoProduce right error msg for $ver < "version"
Father Chrysostomos [Wed, 23 Nov 2011 17:48:01 +0000 (09:48 -0800)]
Produce right error msg for $ver < "version"

"version" was being treated as a version object and then failing
the validation check.  It should be treated as a string, just like
"versions":

$ perl5.15.4 -Ilib -e '$^V < "version"'
Invalid version object at -e line 1.

$ perl5.15.4 -Ilib -e '$^V < "versions"'
Invalid version format (dotted-decimal versions require at least three parts) at -e line 1.

See also perl #102586.

12 years agogv.c: Remove SV_GMAGIC from sv_catpvn_flags call.
Father Chrysostomos [Wed, 23 Nov 2011 16:43:19 +0000 (08:43 -0800)]
gv.c: Remove SV_GMAGIC from sv_catpvn_flags call.

This function doesn’t take that flag.  It wasn’t doing anything.

12 years agoUpdate Pod-LaTeX to CPAN version 0.60
Chris 'BinGOs' Williams [Wed, 23 Nov 2011 21:20:51 +0000 (21:20 +0000)]
Update Pod-LaTeX to CPAN version 0.60

  [DELTA]

  added another LaTeX escape: --- => -{}-{}-

  Pod::LaTeX doesn't handle -- in PODs specially, passing it directly to
  LaTeX, which then proceeds to replace it with a single -. This patch
  replaces ----- with -{}-{}-{}-{}-

12 years agoUpdate Unicode-Collate to CPAN version 0.86
Chris 'BinGOs' Williams [Wed, 23 Nov 2011 21:11:52 +0000 (21:11 +0000)]
Update Unicode-Collate to CPAN version 0.86

  [DELTA]

  0.86  Wed Nov 23 17:16:00 2011
    - tailored compatibility ideographs as well as unified ideographs for
      the locales: ja, ko, zh__big5han, zh__gb2312han, zh__pinyin, zh__stroke.
    - added loc_cjkc.t in t.

12 years agoMove the implementation of --validate from bisect.pl to bisect-runner.pl
Nicholas Clark [Wed, 23 Nov 2011 20:39:06 +0000 (21:39 +0100)]
Move the implementation of --validate from bisect.pl to bisect-runner.pl

--validate sets a default testcase by assigning to @ARGV if its empty. It
makes more sense to do this in bisect-runner.pl, as that processes options
fully, unlike bisect.pl, which passes most through. Hence bisect.pl doesn't
know if some elements of @ARGV are actually options, and hence no testcase
has been supplied, and hence the default is needed.

This change permits the use of --validate with build options such as -D to
work as expected.

12 years agoAdd a --make option to bisect.pl, to specify an alternate make command.
Nicholas Clark [Wed, 23 Nov 2011 14:15:15 +0000 (15:15 +0100)]
Add a --make option to bisect.pl, to specify an alternate make command.

For example, one can utilise this to use gmake instead of the system make.

12 years agoUNIVERSAL::VERSION should treat "version" as a string
Father Chrysostomos [Wed, 23 Nov 2011 06:34:07 +0000 (22:34 -0800)]
UNIVERSAL::VERSION should treat "version" as a string

It was treating it as a version object and then failing the validation
test, instead of treating it as an invalid version format, as it does
with "versions":

$ ./perl -Ilib -e'$VERSION = "versions"; main->VERSION(1)'
Invalid version format (dotted-decimal versions require at least three parts) at -e line 1.
$ ./perl -Ilib -e'$VERSION = "version"; main->VERSION(1)'
Invalid version object at -e line 1.

See also perl #102586.

12 years agoprintf "%vd", "version" should not SEGV
Father Chrysostomos [Wed, 23 Nov 2011 06:22:08 +0000 (22:22 -0800)]
printf "%vd", "version" should not SEGV

See perl #102586.

12 years agoOn AIX, bisect-runner.pl must patch Makefile.SH for parallel make issues.
Nicholas Clark [Wed, 23 Nov 2011 09:59:52 +0000 (10:59 +0100)]
On AIX, bisect-runner.pl must patch Makefile.SH for parallel make issues.

It needs to emulate the bug fix of e6807d8ab22b761c, to ensure lib/Config.pm
is built before makedef.pl is run.

12 years agomakedef.pl uses Config.pm, so needs a Makefile dependency on it.
Nicholas Clark [Wed, 23 Nov 2011 09:08:34 +0000 (10:08 +0100)]
makedef.pl uses Config.pm, so needs a Makefile dependency on it.

Commit 9d6c7f2eccef26a6 changed makedef.pl to use Config.pm
Commit 208d7614b345d1fb refactored makedef.pl to read values from
%Config::Config, instead of reading directly from config.sh

Hence we can replace the dependency on config.sh with one on lib/Config.pm

12 years ago[perl #102586] version->new("version") SEGVs
Father Chrysostomos [Wed, 23 Nov 2011 05:28:15 +0000 (21:28 -0800)]
[perl #102586] version->new("version") SEGVs

This adds an ROK check after calling sv_derived_from, as the latter
also works for class names.  It is done after sv_derived_from, rather
than before, as sv_derived_from calls get-magic.

12 years agoarybase.xs be more defensive
Reini Urban [Tue, 22 Nov 2011 19:30:08 +0000 (13:30 -0600)]
arybase.xs be more defensive

There can be no other keys used with ab_ck_base but clang's static
analyzer has a point in complaining about the missing default case.
This is too fragile if any CHECK is added in BOOT.

12 years agoCorrect spelling of double free warning
Father Chrysostomos [Tue, 22 Nov 2011 22:23:04 +0000 (14:23 -0800)]
Correct spelling of double free warning

The perldiag entry said ‘nonexistent’, which is correct.  hv.c said
‘non-existent’, which is, well, questionable.  They should be the
same, so I corrected hv.c.  I also added the %s%s to the end in
perldiag.

12 years agoCorrect perldiag entry for sv_replace panic
Father Chrysostomos [Tue, 22 Nov 2011 22:18:57 +0000 (14:18 -0800)]
Correct perldiag entry for sv_replace panic

This commit changed the warning to an error and reworded it, but never
updated the docs (this commit completes the TODO):

perl-5.8.0-5715-g30e5c35
commit 30e5c352c9c1099120007e8b6e9318a33d99b3bb
Author: Nicholas Clark <nick@ccl4.org>
Date:   Thu Aug 25 13:46:31 2005 +0000

    Promote the warning about reference miscount in sv_replace to a panic.
    TODO - document the panics

    p4raw-id: //depot/perl@25330

12 years agoperldiag: Fix categories of internal severe warnings
Father Chrysostomos [Tue, 22 Nov 2011 22:14:02 +0000 (14:14 -0800)]
perldiag: Fix categories of internal severe warnings

Some severe/default warnings in the internal and debugging categories
were listed as errors (P) or regular warnings (W).

12 years agosv.c/sv_insert_flags: typo
Father Chrysostomos [Tue, 22 Nov 2011 21:43:12 +0000 (13:43 -0800)]
sv.c/sv_insert_flags: typo

12 years agoamagic_deref_call does not necessitate SPAGAIN
Father Chrysostomos [Tue, 22 Nov 2011 21:34:37 +0000 (13:34 -0800)]
amagic_deref_call does not necessitate SPAGAIN

As amagic_deref_call pushes a new stack, PL_stack_sp will always have
the same value before and after, so SPAGAIN is unnecessary.

12 years ago[Merge] [RT #36079] Convert ` to '
Father Chrysostomos [Wed, 23 Nov 2011 00:27:38 +0000 (16:27 -0800)]
[Merge] [RT #36079] Convert ` to '

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 15:07:02 +0000 (10:07 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 15:03:16 +0000 (10:03 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 14:55:28 +0000 (09:55 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Where sensible, replace consecutive single quotation marks with a double...
jkeenan [Tue, 22 Nov 2011 23:59:53 +0000 (15:59 -0800)]
[RT #36079] Where sensible, replace consecutive single quotation marks with a double quotation mark.

12 years ago[RT #36079] Due to test failures, revert conversion from backtick to single quote.
jkeenan [Sun, 20 Nov 2011 03:12:05 +0000 (22:12 -0500)]
[RT #36079] Due to test failures, revert conversion from backtick to single quote.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 01:21:40 +0000 (20:21 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 01:19:56 +0000 (20:19 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 01:16:47 +0000 (20:16 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 01:15:33 +0000 (20:15 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 01:09:26 +0000 (20:09 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 01:02:17 +0000 (20:02 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 01:01:01 +0000 (20:01 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 00:56:56 +0000 (19:56 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 00:51:11 +0000 (19:51 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 00:49:10 +0000 (19:49 -0500)]
[RT #36079] Convert ` to '.

12 years agoVersion bumps
Father Chrysostomos [Tue, 22 Nov 2011 22:51:46 +0000 (14:51 -0800)]
Version bumps

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 00:41:00 +0000 (19:41 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 00:37:03 +0000 (19:37 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 00:28:08 +0000 (19:28 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 00:23:00 +0000 (19:23 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 00:18:10 +0000 (19:18 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 00:15:23 +0000 (19:15 -0500)]
[RT #36079] Convert ` to '.

12 years ago[RT #36079] Convert ` to '.
jkeenan [Sun, 20 Nov 2011 00:00:59 +0000 (19:00 -0500)]
[RT #36079] Convert ` to '.

12 years agoop.c: typo
Father Chrysostomos [Tue, 22 Nov 2011 21:15:58 +0000 (13:15 -0800)]
op.c: typo

12 years agoMake Data::Dumper UTF8- and null-clean with GVs
Father Chrysostomos [Tue, 22 Nov 2011 20:56:37 +0000 (12:56 -0800)]
Make Data::Dumper UTF8- and null-clean with GVs

12 years agoUpdate IO-Compress to CPAN version 2.043
Chris 'BinGOs' Williams [Tue, 22 Nov 2011 19:32:55 +0000 (19:32 +0000)]
Update IO-Compress to CPAN version 2.043

  [DELTA]

  2.043 20 November 2011

      * IO::Compress::Base
        - Fixed issue that with handling of Zip files with two (or more)
          entries that were STORED. Symptom is the first is uncompressed
          ok, but the next will terminate early if the size of the file is
          greater than BlockSize.
          Regression test added to t/006zip.t
          [RT# 72548]

12 years agoUpdate Compress-Raw-Bzip2 to CPAN version 2.043
Chris 'BinGOs' Williams [Tue, 22 Nov 2011 19:27:12 +0000 (19:27 +0000)]
Update Compress-Raw-Bzip2 to CPAN version 2.043

  [DELTA]

  2.043 20 November 2011

      * No Changes

12 years agoUpdate Compress-Raw-Zlib to CPAN version 2.043
Chris 'BinGOs' Williams [Tue, 22 Nov 2011 19:23:51 +0000 (19:23 +0000)]
Update Compress-Raw-Zlib to CPAN version 2.043

  [DELTA]

  2.043 20 November 2011

      * No Changes

12 years agoUpdate Archive-Tar to CPAN version 1.82
Chris 'BinGOs' Williams [Tue, 22 Nov 2011 19:18:53 +0000 (19:18 +0000)]
Update Archive-Tar to CPAN version 1.82

  [DELTA]

  * important changes in version 1.82 21/11/2011 (CDRAKE)
    - Adjustments to handle files >8gb (>0777777777777 octal)
    - Feature to return the MD5SUM of files in the archive

12 years ago[perl #103766] Wrong $" warning in perl 5.14
Father Chrysostomos [Tue, 22 Nov 2011 17:31:31 +0000 (09:31 -0800)]
[perl #103766] Wrong $" warning in perl 5.14

This code:

    "@{[ $x ]}"

was producing the warning:

    Use of uninitialized value $" in join or string at -e line 1.

erroneously, as of commit 6d1f0892c.

Commit 6d1f0892c was meant to fix bug #72090, which caused the varia-
ble to be mentioned even for the > warning in this instance:

    $ ./perl -we '$a = @$a > 0'
    Use of uninitialized value $a in array dereference at -e line 1.
    Use of uninitialized value $a in numeric gt (>) at -e line 1.

The fix for #72090 was wrong, because the loop that it modified loops
through the kid ops, finding out how many candidates there are.  If
there is only one candidate left, it is used.  Skipping ops that could
be responsible for the undefined value just because we don’t want
to mention their variables is the wrong approach, at least in that
loop, as the blame will fall on whatever other op is left if there
is only one.

There is code further up to deal with the OP_RV2[AH]V case, that des-
cends explicitly into the child ops.  This commit tweaks that code to
descend only for the top-level op, to allow @{ $x } to warn still
about an uninitialised value used in array dereference.  Where @{...}
is an operand to the operator that is emitting the warning, we don’t
descend.  That is how #72090 should have been fixed to begin with, as
it has no odd side effects.

This bug (#103766) affects any other cases where there are two oper-
ands and one is @{...} or %{...}:

    $ perl5.15.4 -e 'use warnings "uninitialized"; $y = 6; $y + @{ $x }'
    Use of uninitialized value $x in array dereference at -e line 1.
    Use of uninitialized value $y in addition (+) at -e line 1.

$y is obviously not responsible there.

12 years agoMove a test from t/lib/warnings/sv to .../9uninit
Father Chrysostomos [Tue, 22 Nov 2011 16:35:37 +0000 (08:35 -0800)]
Move a test from t/lib/warnings/sv to .../9uninit

I think .../sv is for warnings originating from code in sv.c, not just
any uninitialized warnings, the code for handling which is in sv.c.
We have 9uninit for a reason.

13 years agoIn Perl_moreswitches(), merge the cases for 't' and 'T'.
Nicholas Clark [Tue, 22 Nov 2011 14:05:01 +0000 (15:05 +0100)]
In Perl_moreswitches(), merge the cases for 't' and 'T'.

Both bodies were the same, aside from hardcoded 't' and 'T', which can be
replaced with a variable.

13 years agoMerge bisect-runner.pl fixes for 5.11-era parallel make bugs.
Nicholas Clark [Tue, 22 Nov 2011 09:53:20 +0000 (09:53 +0000)]
Merge bisect-runner.pl fixes for 5.11-era parallel make bugs.

"all known" - that's a description to tempt fate. But bisect-runner.pl
should now avoid falling foul of make race conditions introduced from late
December 2008, and only resolved in January 2010.

Without the fixes, the parallel make bugs could mean that a bisect would
sometimes fail to build any revision in the range. The best case would be a
"skip" on an intermediate revision, and a slightly slower bisect run. The
worst case would be the bisect reporting failure to complete, giving a
range of skipped revisions instead of a definitive answer.

13 years agobisect-runner.pl now fixes all known 5.11-era parallel make bugs.
Nicholas Clark [Mon, 21 Nov 2011 19:48:32 +0000 (19:48 +0000)]
bisect-runner.pl now fixes all known 5.11-era parallel make bugs.

bisect-runner.pl now patches Makefile.SH to ensure that lib/Config_git.pl
is built before configpm is run, and that configpm is run exactly ones.

"all known" - that's a description to tempt fate. But bisect-runner.pl should
now avoid falling foul of make race conditions introduced from late December
2008, and only resolved in January 2010.

13 years agobisect-runner.pl now fixes another 5.11-era parallel make bug.
Nicholas Clark [Mon, 21 Nov 2011 17:20:02 +0000 (17:20 +0000)]
bisect-runner.pl now fixes another 5.11-era parallel make bug.

Emulate commit 2b63e250843b907e, by correcting Makefile.SH to correctly
describe the relationship between git_version.h, lib/Config_git.pl and
running make_patchnum.pl

13 years agobisect-runner.pl now fixes more 5.11-era make bugs.
Nicholas Clark [Mon, 21 Nov 2011 16:12:04 +0000 (16:12 +0000)]
bisect-runner.pl now fixes more 5.11-era make bugs.

bisect-runner.pl now patches Makefile.SH to ensure that git_version.h is built
before perl.o, for revisions between the addition of git_version.h, and the
addition of rules to ensure the correct build sequence.

13 years agobisect-runner.pl now fixes more 5.11-era parallel make bugs.
Nicholas Clark [Sun, 20 Nov 2011 19:03:35 +0000 (19:03 +0000)]
bisect-runner.pl now fixes more 5.11-era parallel make bugs.

Backport two of the bugfixes from commit 0f13ebd5d71f8177 into earlier
revisions. Avoid running autodoc.pl or ./generate_uudmap more than once.

13 years agobisect-runner.pl now fixes some 5.11-era parallel make bugs.
Nicholas Clark [Sun, 20 Nov 2011 16:53:47 +0000 (16:53 +0000)]
bisect-runner.pl now fixes some 5.11-era parallel make bugs.

bisect-runner.pl now patches Makefile.SH with correct dependencies for the
first iteration of incorporating the git version in perl -V output by
writing the files .patchnum or unpushed.h.

This era is important because contains the commit that merges Schwern's y2038
work, which is likely to be significant for some testcases.

13 years agoSynchronise Module-CoreList version with what is teh on CPAN
Chris 'BinGOs' Williams [Tue, 22 Nov 2011 08:18:44 +0000 (08:18 +0000)]
Synchronise Module-CoreList version with what is teh on CPAN

13 years ago[perl #80628] __SUB__
Father Chrysostomos [Tue, 22 Nov 2011 07:43:17 +0000 (23:43 -0800)]
[perl #80628] __SUB__

After much alternation, altercation and alteration, __SUB__ is
finally here.

13 years agoTest for lack of uninit warnings in sub redef
Father Chrysostomos [Tue, 22 Nov 2011 06:40:41 +0000 (22:40 -0800)]
Test for lack of uninit warnings in sub redef

This adds tests for something I fixed ‘by mistake’ in efcf35c4, which
occurs from 5.8.0 to 5.15.5:

$ perl5.15.4  -le '
   use warnings "uninitialized";
   use constant {u=>undef,v=>undef};
   sub foo(){u} sub foo(){v}
'
Use of uninitialized value at -e line 1.
Use of uninitialized value at -e line 1.

13 years agosv.c: newSVpvf( → Perl_newSVpvf(aTHX_
Father Chrysostomos [Tue, 22 Nov 2011 06:50:23 +0000 (22:50 -0800)]
sv.c: newSVpvf( → Perl_newSVpvf(aTHX_

I don’t know why this is necessary, but there are some strange
#defines surrounding this function.

13 years agoPut sub redef warnings in one place
Father Chrysostomos [Tue, 22 Nov 2011 05:57:21 +0000 (21:57 -0800)]
Put sub redef warnings in one place

The logic surrounding subroutine redefinition warnings (to warn or not
to warn?) was in three places.  Over time, they drifted apart, to the\rpoint that newXS was following completely different rules.  It was
only warning for redefinition of functions in the autouse namespace.
Recent commits have brought it into conformity with the other redefi-
nition warnings.

Obviously it’s about time we put it in one function.

13 years agoPATCH: [perl #104226]: Name.pm missing from unicore
Karl Williamson [Tue, 22 Nov 2011 00:41:02 +0000 (17:41 -0700)]
PATCH: [perl #104226]: Name.pm missing from unicore

The installperl script needed to be updated to include this file.

13 years agoMake const redef warnings default in newXS
Father Chrysostomos [Tue, 22 Nov 2011 00:12:50 +0000 (16:12 -0800)]
Make const redef warnings default in newXS

There is no reason why constant redefinition warnings should be
default warnings for sub foo(){1}, but not for newCONSTSUB (which
calls newXS, which triggers the warning).

To make this work properly, I also had to import sv.c’s ‘are these
const subs from the same SV originally?’ logic.  Constants created
with XS can have NULL for the SV (they return an empty list or
&PL_sv_undef), which means sv.c’s logic will stop *this=\&that from
warning if both this and that are such XS-created constants.
newCONSTSUB needed to be consistent with that.  It required tweaking a
test I added a few commits ago, which arguably shouldn’t have warned
the way it was written.

As of this commit (and before it, too, come to think of it),
newXS_len_flags’s calling convention is quite awful and would need to
be throughly re-thunk before being made into an API, or probably sim-
ply never made into an API.

13 years agoRefactor newXS’s autouse logic
Father Chrysostomos [Mon, 21 Nov 2011 22:14:36 +0000 (14:14 -0800)]
Refactor newXS’s autouse logic

Putting inside the if() condition allows me to add an || in the
next commit.

13 years agoutf8.c: typos in pod
Karl Williamson [Tue, 22 Nov 2011 00:09:07 +0000 (17:09 -0700)]
utf8.c: typos in pod

13 years agoPATCH: [perl #32080] is_utf8_string() reads too far
Karl Williamson [Tue, 22 Nov 2011 00:04:38 +0000 (17:04 -0700)]
PATCH: [perl #32080] is_utf8_string() reads too far

This function and is_utf8_string_loclen() are modified to check before
reading beyond the end of the string; and the pod for is_utf8_char()
is modified to warn about the buffer overflow potential.

13 years agoutf8.h: Add missing parens
Karl Williamson [Mon, 21 Nov 2011 23:58:30 +0000 (16:58 -0700)]
utf8.h: Add missing parens

These weren't caught because it only is compiled on an EBCDIC platform,
and I had to fake it to force the compilation

13 years agoutf8.h: define IS_UTF8_CHAR for EBCDIC
Karl Williamson [Mon, 21 Nov 2011 23:28:52 +0000 (16:28 -0700)]
utf8.h: define IS_UTF8_CHAR for EBCDIC

This is based on my eyeballing a file I had generated of the encodings
for Unicode code points, so could be wrong.  It does compile

13 years agoutf8.h: White space only
Karl Williamson [Mon, 21 Nov 2011 23:25:17 +0000 (16:25 -0700)]
utf8.h: White space only

This indents for clarity with the surrounding #if, and #end.

13 years agoutfebcdic.h: Add synonymous macros
Karl Williamson [Mon, 21 Nov 2011 23:21:58 +0000 (16:21 -0700)]
utfebcdic.h: Add synonymous macros

I8 is a synonym for 'UTF' in this context, and is more meaningful to me.

13 years agoperldiag: constant redef warning is not always default
Father Chrysostomos [Mon, 21 Nov 2011 21:16:56 +0000 (13:16 -0800)]
perldiag: constant redef warning is not always default

If the value of the new constant is the same as the old, this warning
only occurs under ‘use warnings 'redefine'’ and $^W=1, not under $^W=0
outside of any warnings scope.

13 years agoperlsub: constant redef warning is default, not mandatory
Father Chrysostomos [Mon, 21 Nov 2011 21:09:19 +0000 (13:09 -0800)]
perlsub: constant redef warning is default, not mandatory

13 years agoMake constant sub redef warnings obey scope
Father Chrysostomos [Mon, 21 Nov 2011 21:02:47 +0000 (13:02 -0800)]
Make constant sub redef warnings obey scope

In perldiag, this is listed as (S), which means that outside of any
use/no warnings scope it always warns, regardless of $^W.

But this warning was ignoring use/no warnings, too.

There were actually tests for this oddity, but I think those were
added by mistake, or this was just not thought through.  I cannot see
how this is not a bug.

13 years agoautouse.t: suppress warnings
Father Chrysostomos [Mon, 21 Nov 2011 17:35:20 +0000 (09:35 -0800)]
autouse.t: suppress warnings

13 years agoDon’t call an early-returning destructor
Father Chrysostomos [Mon, 21 Nov 2011 16:40:34 +0000 (08:40 -0800)]
Don’t call an early-returning destructor

This speeds things up 2.8 times in my naïve benchmarks.

This applies to code like:

    use constant DEBUG => 1;
    DESTROY { return unless DEBUG; ... }

which gets optimised down to:

    DESTROY { return; ... }

Adding such a destructor will now have almost no impact on speed in
production.

13 years agoMake newXS redefinition warning respect UTF8
Father Chrysostomos [Mon, 21 Nov 2011 08:21:43 +0000 (00:21 -0800)]
Make newXS redefinition warning respect UTF8

13 years agoMake newCONSTSUB use the right warning scope.
Father Chrysostomos [Mon, 21 Nov 2011 08:06:23 +0000 (00:06 -0800)]
Make newCONSTSUB use the right warning scope.

newCONSTSUB uses the compile-time warning hints, instead of the run-
time hints.  This means that

  use warnings;
  BEGIN {
    no warnings;
    some_XS_function_that_calls_new_CONSTSUB();
  }

may trigger a redefinition warning, whereas it should be analogous to

  use warnings;
  BEGIN {
    no warnings;
    *foo = \&bar;
  }

which does not warn.

newCONSTSUB localises PL_curcop and sets it to &PL_compiling.  When it
does that, it needs to copy the hints over.

Running tests inside eval is not reliable without a test count, so I
added one.

13 years agoRestore autouse’s exemption from redef warnings
Father Chrysostomos [Mon, 21 Nov 2011 07:46:48 +0000 (23:46 -0800)]
Restore autouse’s exemption from redef warnings

This also restores the subroutine redefinition warning for newly-cre-
ated XSUBs outside the autouse package.  See below.

This commit added the exemption to fix a known bug, that loading a
module and importing from it would cause a redefinition warning if
there were an autouse stub:

perl-5.004_03-1092-g2f34f9d
commit 2f34f9d4825ac9262ece854fc4c50479f4838ff8
Author: Ilya Zakharevich <ilya@math.berkeley.edu>
Date:   Mon Mar 2 16:36:02 1998 -0500

    Make autouse -w-safe

    p4raw-id: //depot/perl@781

The subroutine redefinition warning occurs in three places.
This commit removed the autouse exemption from two
of them.  I can’t see how it wasn’t a mistake, as <5104D4DBC598D211B5FE0000F8FE7EB202D49EE9@mbtlipnt02.btlabs.bt.co.uk>
(the apparent source of the patch, makes no mention of it:

perl-5.005_02-2920-ge476b1b
commit e476b1b5c29f354cf8dad61a9fc6d855bdfb5b7d
Author: Gurusamy Sarathy <gsar@cpan.org>
Date:   Sun Feb 20 22:58:09 2000 +0000

    lexical warnings update, ability to inspect bitmask in calling
    scope, among other things (from Paul Marquess)

    p4raw-id: //depot/perl@5170

This commit refactored things to remove some compiler warnings, but
in doing so reversed the logic of the condition, causing redefini-
tion warnings for newly-created XSUBs to apply only to subs from the
autouse package:

perl-5.8.0-5131-g66a1b24
commit 66a1b24beb76ea873ad4caa57ee3ab9df945afbf
Author: Andy Lester <andy@petdance.com>
Date:   Mon Jun 6 05:11:07 2005 -0500

    Random cleanups #47
    Message-ID: <20050606151107.GC7022@petdance.com>

    p4raw-id: //depot/perl@24735

I’ve basically reinstated the changes in 2f34f9d4, but with tests
this time.

It may not make sense for autouse to be exempt for newATTRSUB and
newXS, but keeping the logic surrounding the warning as close as
possible to being the same could allow future refactorings to
merge them.

13 years agosv.c: I missed a dot
Father Chrysostomos [Mon, 21 Nov 2011 00:54:11 +0000 (16:54 -0800)]
sv.c: I missed a dot

13 years agoMake sort {} and sort {()} equivalent
Father Chrysostomos [Mon, 21 Nov 2011 00:50:37 +0000 (16:50 -0800)]
Make sort {} and sort {()} equivalent

sub {} and sub{()} are equivalent.  In list context they both return
the empty list.  In scalar context they both return undef.  But sort
doesn’t seem to think so.  It croaks on sub{}.  This commit fixes that
and makes it consistent.

I left XSUBs alone, since I’m not sure how they are supposed
to behave.

13 years agoMerge remote-tracking branch 'p5p/smoke-me/gsoc-pod' into blead
Ricardo Signes [Mon, 21 Nov 2011 02:41:33 +0000 (21:41 -0500)]
Merge remote-tracking branch 'p5p/smoke-me/gsoc-pod' into blead

13 years agoUpdate release managers' guide
Steve Hay [Mon, 21 Nov 2011 01:59:43 +0000 (01:59 +0000)]
Update release managers' guide

The new instructions for creating a new perldelta have now been battle
tested and withstood most excellently any would-be onslaught from gremlins.

13 years agoCreate new perldelta ready for 5.15.6
Steve Hay [Mon, 21 Nov 2011 01:51:37 +0000 (01:51 +0000)]
Create new perldelta ready for 5.15.6

13 years agoAdd the 5.15.5 release epigraph to epigraphs.pod
Steve Hay [Mon, 21 Nov 2011 01:03:23 +0000 (01:03 +0000)]
Add the 5.15.5 release epigraph to epigraphs.pod

13 years agoOops. I thought I tested that.
Father Chrysostomos [Mon, 21 Nov 2011 00:18:14 +0000 (16:18 -0800)]
Oops. I thought I tested that.

13 years agoAdd Rodolfo Carvalho to AUTHORS
Father Chrysostomos [Mon, 21 Nov 2011 00:08:18 +0000 (16:08 -0800)]
Add Rodolfo Carvalho to AUTHORS

13 years agoFix a 5-year-old typo in a comment
Rodolfo Carvalho [Sun, 9 Oct 2011 03:53:54 +0000 (00:53 -0300)]
Fix a 5-year-old typo in a comment

13 years ago$XS::APItest::VERSION = '0.34'
Father Chrysostomos [Mon, 21 Nov 2011 00:07:01 +0000 (16:07 -0800)]
$XS::APItest::VERSION = '0.34'

13 years agoRemove version checks from B::Deparse’s imports
Father Chrysostomos [Sun, 20 Nov 2011 22:51:19 +0000 (14:51 -0800)]
Remove version checks from B::Deparse’s imports

Since we already have code to generate dummy constants if these are
missing, we might as well have that code import the constant in an
eval{}, to avoid all these hairy version checks.

13 years agoRevert "$XS::APItest::VERSION = '0.34'"
Father Chrysostomos [Mon, 21 Nov 2011 00:02:53 +0000 (16:02 -0800)]
Revert "$XS::APItest::VERSION = '0.34'"

This reverts commit 01394286a8355f7c2b1de8f793a62c37d4aa265e.

I made the mistake (again!) of merging two unrelated commits.
I’m reverting it so that the B::Deparse change can include a
helpful commit message.

13 years ago$XS::APItest::VERSION = '0.34'
Father Chrysostomos [Sun, 20 Nov 2011 22:51:19 +0000 (14:51 -0800)]
$XS::APItest::VERSION = '0.34'

13 years agoUpdate Aaron Crane's email address in AUTHORS
Aaron Crane [Wed, 17 Aug 2011 14:56:38 +0000 (17:56 +0300)]
Update Aaron Crane's email address in AUTHORS