This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
9 years agocorrect comment about how strings are tokenised
David Mitchell [Fri, 22 Jul 2011 13:56:17 +0000 (14:56 +0100)]
correct comment about how strings are tokenised

The stuff about "foo\lbar" being tokenised as a list which you need to
apply join() to, was wrong; the tokeniser outputs the necessary concats
rather than commas.

9 years agoRevert 4 regex commits to ease rebasing
David Mitchell [Sun, 30 Oct 2011 16:12:02 +0000 (16:12 +0000)]
Revert 4 regex commits to ease rebasing

Revert "Remove some repeated code in pp_regcomp"
This reverts commit 3e1022372a8200bc4c7354e0f588c7f71584a888.

Revert "regcomp.c: Use no_mg for 2nd fetch of pattern"
This reverts commit 3e0b93e82af0f1a033bcdb918b413113f1d61cf0.
`
Revert "PATCH: [perl #101940]: BBC Tk"
This reverts commit 11951bcbfcaf4c260b0da0421e72fc80b4654f17.

Revert "Fix =~ $str_overloaded (5.10 regression)"
This reverts commit 15d9c083b08647e489d279a1059b4f14a3df187b.

These four recent commits on the blead branch overlap with work on the
re_eval branch. To make rebasing re_eval easier, revert them at the
beginning of the re_eval branch. Any remaining value will be re-added
later in the re_eval branch.

9 years agoRevert two commits that fix a VOL declaration.
David Mitchell [Sat, 12 Nov 2011 22:11:28 +0000 (22:11 +0000)]
Revert two commits that fix a VOL declaration.
This has also been done on my davem/re_eval branch,
and its easiest to revert these at the start of my branch

Revert "regcomp.c: Silence compiler warning about longjump"

This reverts commit 24efd69ba77ba76cd714519dccee88f45820d8b4.

Revert "Fix volatile declaration"

This reverts commit 4d6b28934825c9c735195140271a6f93f9c07348.

9 years agorevert a trailing whitespace removal
David Mitchell [Tue, 14 Feb 2012 17:25:32 +0000 (17:25 +0000)]
revert a trailing whitespace removal

this is to make rebasing easier. On one of the rebased commits
also removes this whitespace

9 years agoTemporarily revert some lib/overload.t tests
David Mitchell [Tue, 14 Feb 2012 16:20:14 +0000 (16:20 +0000)]
Temporarily revert some lib/overload.t tests

these accumulated from a few recent commits. Removing will make rebasing
easier.

9 years agoRevert two commits to make rebasing easier
David Mitchell [Tue, 14 Feb 2012 11:55:46 +0000 (11:55 +0000)]
Revert two commits to make rebasing easier

These two commits will be added back later after rebasing

    "[perl #108780] Make /foo$qr/ work under ‘no overloading’"

        37c07a4b201c9f799808d346817c4685e3e9002a.

    "regcomp.c: Silence valgrind warning"

        44bed85634c450533d59ae9e371037dde0101d51.

9 years agoTemporarily remove overload.t changes
David Mitchell [Mon, 4 Jun 2012 14:25:23 +0000 (15:25 +0100)]
Temporarily remove overload.t changes

undo commits done to lib/overload.t on the blead branch
between 2012/03/31 and 2012/06/04 to make rebasing the re_eval
branch easier. These changes will be re-applied at the end of the rebase

9 years agoUpdate List-Util to CPAN version 1.25
Chris 'BinGOs' Williams [Sun, 27 May 2012 21:19:38 +0000 (22:19 +0100)]
Update List-Util to CPAN version 1.25

  [DELTA]

1.25 -- Sat Mar 24 13:10:13 UTC 2012

  * Restore back-compat. to perl 5.6 (thanks to Zefram)

1.24 -- Thu Mar 22 18:10:10 UTC 2012

  * Update to 1.24 release version (no other changes since 1.23_04).

1.23_04 -- Sat Mar 10 00:16:16 UTC 2012

  * RT#72700 Fix off-by-two on string literal length

1.23_03 -- Tue Sep 14 10:09:59 CDT 2010

  * Min perl version supported for build is not 5.008
  * Dropped the pure-Perl implementation of both Scalar::- and List::Util.
  * RT#61118 Fix assumption in sum() that once magic, always magic

1.23_02 -- Tue Mar 30 11:09:15 CDT 2010

  * Fix first() and reduce() to check the callback first; &first(1) is now illigal. [gfx]
  * Fix reduce() to allow XSUB callbacks [gfx]
  * Fix first() to allow XSUB callbacks [gfx]
  * Resolve RT #55763: tainted() doesn't do SvGETMAGIC(sv) [gfx]
  * define CvISXSUB so older perl versions will still compile

1.23_01 -- Mon Mar 22 08:24:11 CDT 2010

  * Add failing tests; SVt_RV is not directly SvROK [gfx]
  * Implement openhandle() in XS (with extra tests) [gfx]
  * Modernize *.pm [gfx]
  * Modernize ListUtil.xs [gfx]
  * Add ppport.h [gfx]
  * Fix an overloading issue on sum(), and add tests for overloading [gfx]
  * Small tweaks for minstr()/maxstr() [gfx]
  * Optimize dualvar() [gfx]
  * Use sv_copypv() instead of SvPV() and sv_setpv() [gfx]
  * avoid non-portable warnings

9 years agoUse standard gcc names in config_H.gc64's CPPSTDIN/CPPRUN
Steve Hay [Tue, 12 Jun 2012 07:44:31 +0000 (08:44 +0100)]
Use standard gcc names in config_H.gc64's CPPSTDIN/CPPRUN

These canned defaults are not used in making miniperl.exe, after which the
real config.h will be generated with the correct values depending on the
compiler toolchain. This is just for sanity's sake to make the diff
between the .gc and .gc64 files clearer.

9 years agodon't override a user supplied prefix on Haiku-OS
Tony Cook [Tue, 12 Jun 2012 11:05:37 +0000 (11:05 +0000)]
don't override a user supplied prefix on Haiku-OS

9 years agoRequire space between regex and following alnum operator
Karl Williamson [Mon, 11 Jun 2012 17:48:04 +0000 (11:48 -0600)]
Require space between regex and following alnum operator

Not having such space has been deprecated since v5.14.0.

9 years agoop/eval.t: Change test
Karl Williamson [Mon, 11 Jun 2012 17:45:02 +0000 (11:45 -0600)]
op/eval.t: Change test

A future commit will change the output for this test, so use another one
that generates a straight syntax error.

9 years agoperldelta for RT #113584
Karl Williamson [Mon, 11 Jun 2012 16:35:49 +0000 (10:35 -0600)]
perldelta for RT #113584

9 years agoPATCH: [perl #113584] tr/// multiple transliterations
Karl Williamson [Mon, 11 Jun 2012 15:56:56 +0000 (09:56 -0600)]
PATCH: [perl #113584] tr/// multiple transliterations

Commit 4de6d205aeab9ec737ca35ba4eb61f37cebefc55 failed to take into
consideration tr///.

9 years agoreorganize perlcheat
H.Merijn Brand [Mon, 11 Jun 2012 10:57:36 +0000 (12:57 +0200)]
reorganize perlcheat

add FALSE/TRUE, \K, better named capture, remove links section,
unindent DEBUG

9 years agoFix typo in comment
Steve Hay [Mon, 11 Jun 2012 07:53:08 +0000 (08:53 +0100)]
Fix typo in comment

9 years agoCorrect the comment style of a couple of not #defined symbols
Steve Hay [Mon, 11 Jun 2012 07:52:20 +0000 (08:52 +0100)]
Correct the comment style of a couple of not #defined symbols

9 years agoTrailing whitespace removal
Steve Hay [Mon, 11 Jun 2012 07:50:54 +0000 (08:50 +0100)]
Trailing whitespace removal

9 years agoMinGW/gcc does have long long, even for 32-bit builds
Steve Hay [Mon, 11 Jun 2012 07:49:46 +0000 (08:49 +0100)]
MinGW/gcc does have long long, even for 32-bit builds

(It's already used for [iu]64type and [u]quadtype, just like __int64 is
used on 32-bit VC++ builds.)

Thanks to Sisyphus & kmx for the spot.

9 years agoInstall all include files on VMS.
Craig A. Berry [Sun, 10 Jun 2012 19:04:36 +0000 (14:04 -0500)]
Install all include files on VMS.

On most platforms, installperl copies *.h from the top-level source
directory to an appropriate installed location.  On VMS, we stage
everything to an archcore directory first and installperl copies
them from there.  Whether this is a good way to be doing things in
this day and age is questionable, but the more immediate problem is
that we have been (badly) maintaining our own list of what should
get staged in the archcore directory.  By my count, 5.16.0 shipped
with 18 of 69 include files missing.[1]  Ouch.

So this commit abolishes the separately-maintained, explicitly-named
list of include files and just copies all of them to the staging
directory, where installperl will pick them up.

[1] For folks counting at home, we have vmsish.h, which no one else
has, so that's why there are 69, not 68.

9 years agoOnly export Perl_alloccopstash under threads.
Craig A. Berry [Sun, 10 Jun 2012 02:48:22 +0000 (21:48 -0500)]
Only export Perl_alloccopstash under threads.

It might make more sense for makedef.pl to more carefully examine
embed.fnc for what's a symbol to be exported only under threads and
what's not, but for now, we appear to be maintaining a hard-coded
list of symbols not to export when not under threads, so let's add
Perl_alloccopstash to the list.  Failing to do so breaks the
build on platforms where the linker is literal-minded about what
symbols it's been told to find in the export list.

9 years agoUnicode::UCD: typo and incorrect recipe in pod
Karl Williamson [Sat, 9 Jun 2012 23:43:15 +0000 (17:43 -0600)]
Unicode::UCD: typo and incorrect recipe in pod

An extra word is removed, and the recipe should not eval lines with NaN
in them and expect the answer to be NaN

9 years agoRemove win32/config*.gc64nox
Steve Hay [Sat, 9 Jun 2012 16:56:40 +0000 (17:56 +0100)]
Remove win32/config*.gc64nox

The ARCHPREFIX setting from makefile.mk is now passed into config_sh.PL
and config_h.PL and used to apply the changes necessary to the
config*.gc64 files to support both the usual gcc suite and the
x86_64-w64-mingw32-gcc suite (used when GCCCROSS=define).

Also remove the redundant INST_VER argument in the config_h.PL calls.

9 years agoRemove __GNUC__ / _MSC_VER games from win32/config_H.*
Steve Hay [Sat, 9 Jun 2012 10:57:58 +0000 (11:57 +0100)]
Remove __GNUC__ / _MSC_VER games from win32/config_H.*

The code was added by 465b7da985, based on changes in ActivePerl 816, but
it's not working correctly because the current build process winds up with
a config.h in lib/CORE which doesn't contain that code anyway.

(The appropriate canned config_H.* file is copied to config.h in order to
build miniperl.exe, but then miniperl.exe is used to run config_h.PL to
generate the real config.h from config_h.SH and config.sh. The real
config.h is then used to build perl.exe and is what gets copied into
lib/CORE for later use when building extensions, but it doesn't contain
the support for other compilers because that isn't in config_h.SH...)

Removing the code won't affect ActivePerl since it has not been getting
installed anyway, and Jan Dubois has confirmed that it is possible to
build a Perl extension using e.g. Off_t with MinGW even with the VC
config.h header file. Furthermore, anyone building perl from source
themselves will presumably be able to use the same compiler to build
extensions as they used to build perl itself anyway, so there is no
obvious need for this in the core perl distro.

Therefore, removing it rather than fixing it is better for simplicity.

9 years agoUpdated perlfaq to CPAN version 5.0150040
Chris 'BinGOs' Williams [Sat, 9 Jun 2012 11:27:09 +0000 (12:27 +0100)]
Updated perlfaq to CPAN version 5.0150040

  [DELTA]

  5.0150040 Sat  9 Jun 2012 12:02:27 +0100
    * perlglossary provided by Tom C. from Camel 4
    * remove prototypes and & for subroutine (mauke)
    * Grammar from patch [RT #113492]
    * utf8 in Email::MIME (wchristian)

9 years agoQuieten B::Deparse warnings (fixes #113464).
Paul Johnson [Sat, 2 Jun 2012 12:44:47 +0000 (14:44 +0200)]
Quieten B::Deparse warnings (fixes #113464).

9 years ago[perl #111610] Trouble with XS-APItest/t/clone-with-stack.t
Michael Schroeder [Sat, 9 Jun 2012 03:29:54 +0000 (20:29 -0700)]
[perl #111610] Trouble with XS-APItest/t/clone-with-stack.t

I ran into a bit of a problem when building perl-5.16.0.
'make test' showed a segfault in ext/XS-APItest/t/clone-with-stack.t.
It seems to be caused by accessing already freed memory, it
segfaults because I have MALLOC_PERTUBE_ set, thus glibc fills
freed memory with some value.

Digging deeper, it seems like perl_clone() does not fix
the cx's blk_oldcop element when doing context cloning, thus
blk_oldcop still points to PL_compiling in the old interp--the
calling scope for the BEGIN block being the compilation of the
code surrounding it--and the POPBLOCK done in leavesub will copy
the data from the old interp to PL_curcop.

After fixing this, it still crashed because interp_dup->Iop was
zero after the runops_standard() call (which is probably
correct as the end of the BEGIN block was reached). So I
also added an if statement that checks the pointer.

9 years agocflags: clang complains a lot about -Wunused-value which are not fixable
Reini Urban [Thu, 31 May 2012 19:58:35 +0000 (14:58 -0500)]
cflags: clang complains a lot about -Wunused-value which are not fixable

9 years agoAdd alloccopstash provisionally to the API
Father Chrysostomos [Sat, 9 Jun 2012 00:58:39 +0000 (17:58 -0700)]
Add alloccopstash provisionally to the API

9 years agoUpgrade initialization code in vms/vms.c.
Craig A. Berry [Fri, 8 Jun 2012 23:33:33 +0000 (18:33 -0500)]
Upgrade initialization code in vms/vms.c.

The LIB$INITIALIZE program section is examined by the image
activator for an array of 32-bit pointers to functions that will
get called early in start-up, before main() is called.  We use
this mechanism to get and set various run-time features.

The implementation we had was a bit cluttered with undocumented
features that weren't being used, and it didn't work under C++.
This new implementation is simpler and follows the documented
usage in the C++ release notes much more closely, and it works
under both C and C++.

We also now explicitly export the LIB$INITIALIZE psect in the
linker options file used to create the PERLSHR shareable image.

9 years agoRemove pragma about pragma messages.
Craig A. Berry [Fri, 8 Jun 2012 23:17:54 +0000 (18:17 -0500)]
Remove pragma about pragma messages.

We currently aren't getting any warnings about pragmas that need
to be suppressed and the C++ compiler doesn't know about the
"pragma" class of warnings, so stop disabling them.

9 years agoConsistent indentation in perlbook
Father Chrysostomos [Fri, 8 Jun 2012 23:19:40 +0000 (16:19 -0700)]
Consistent indentation in perlbook

9 years agoIncrease $B::Deparse::VERSION to 1.15
Father Chrysostomos [Fri, 8 Jun 2012 21:50:35 +0000 (14:50 -0700)]
Increase $B::Deparse::VERSION to 1.15

9 years agoB::Deparse: loopexes have list prec
Father Chrysostomos [Fri, 8 Jun 2012 21:49:57 +0000 (14:49 -0700)]
B::Deparse: loopexes have list prec

9 years agoConstant folding for x
Father Chrysostomos [Fri, 8 Jun 2012 19:58:42 +0000 (12:58 -0700)]
Constant folding for x

9 years agocv.h: Add comments
Father Chrysostomos [Fri, 8 Jun 2012 19:27:16 +0000 (12:27 -0700)]
cv.h: Add comments

9 years agoMake __SUB__ work in special blocks
Father Chrysostomos [Fri, 8 Jun 2012 17:00:38 +0000 (10:00 -0700)]
Make __SUB__ work in special blocks

9 years agosv.h: Comment typo
Father Chrysostomos [Fri, 8 Jun 2012 15:45:11 +0000 (08:45 -0700)]
sv.h: Comment typo

9 years agocop_stashoff is an integer, not a pointer.
Craig A. Berry [Fri, 8 Jun 2012 22:28:00 +0000 (17:28 -0500)]
cop_stashoff is an integer, not a pointer.

Fix for compiler warning introduced by d4d03940c58.

9 years agoUpdate perlbook.pod with recent releases
Herbert Breunung [Fri, 8 Jun 2012 22:16:12 +0000 (23:16 +0100)]
Update perlbook.pod with recent releases

Signed-off-by: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
9 years agoExperimentally Use Unicode 6.2 beta
Karl Williamson [Fri, 8 Jun 2012 16:10:28 +0000 (10:10 -0600)]
Experimentally Use Unicode 6.2 beta

Unicode 6.2 is proposing some changes that may very well break some
CPAN modules.  The timing of this nicely coincides with Perl's being
early in the release cycle.  This commit takes the current beta 6.2,
adds the proposed changes that aren't yet in it, and subtracts the
changes that would affect \X processing, as those turn out to have
errors, and may have to be rethought.  Unicode has been notified of
these problems.

This commit is to gather data as to whether or not the proposed changes
cause us problems.  These will be presented to Unicode to aid in their
final decision as to whether or not to go forward with the changes.

This commit should be reverted at some point, and the final 6.2 used
instead.

9 years agomktables: Remove unused $scalar
Karl Williamson [Fri, 8 Jun 2012 15:53:57 +0000 (09:53 -0600)]
mktables: Remove unused $scalar

This variable is no longer used, but the expression needs to be
evaluated anyway.  The code is outdented.

9 years agounicore/README.perl: Make text comments
Karl Williamson [Thu, 7 Jun 2012 04:32:53 +0000 (22:32 -0600)]
unicore/README.perl: Make text comments

This is so that it can be run by a Unix shell command to rename the
files that Unicode furnishes to the ones that Perl expects (because of
DOS 8.3 filesystems).

9 years agomktables: Add error check for overloaded &=
Karl Williamson [Fri, 8 Jun 2012 03:38:01 +0000 (21:38 -0600)]
mktables: Add error check for overloaded &=

This operation is not commutative, so should fail if the operands are
swapped.

9 years agomktables: Add &= overload for Range_Lists
Karl Williamson [Fri, 8 Jun 2012 03:35:17 +0000 (21:35 -0600)]
mktables: Add &= overload for Range_Lists

This is useful under the -annotate option

9 years agomktables: Use control names under -annotate
Karl Williamson [Fri, 8 Jun 2012 03:33:10 +0000 (21:33 -0600)]
mktables: Use control names under -annotate

Now that all the control characters have names, use them instead of the
generic, "Control", but retain that as a fall back just in case.

9 years agoSync base in Maintainers.pl with CPAN version
Chris 'BinGOs' Williams [Fri, 8 Jun 2012 12:26:48 +0000 (13:26 +0100)]
Sync base in Maintainers.pl with CPAN version

9 years agoperldelta for $@=3; warn
Father Chrysostomos [Fri, 8 Jun 2012 06:48:14 +0000 (23:48 -0700)]
perldelta for $@=3; warn

9 years agoperldelta for -$utf8
Father Chrysostomos [Fri, 8 Jun 2012 06:46:18 +0000 (23:46 -0700)]
perldelta for -$utf8

9 years agoperldelta for -"-10" with gmagic
Father Chrysostomos [Fri, 8 Jun 2012 06:45:16 +0000 (23:45 -0700)]
perldelta for -"-10" with gmagic

9 years agoperldelta for -$str_with_cached_num
Father Chrysostomos [Fri, 8 Jun 2012 06:44:10 +0000 (23:44 -0700)]
perldelta for -$str_with_cached_num

9 years agoperldelta for numeric opts, gmg, and 64-bit ints
Father Chrysostomos [Fri, 8 Jun 2012 06:40:55 +0000 (23:40 -0700)]
perldelta for numeric opts, gmg, and 64-bit ints

9 years agoperldelta for warn gmagic fixes
Father Chrysostomos [Fri, 8 Jun 2012 06:38:40 +0000 (23:38 -0700)]
perldelta for warn gmagic fixes

9 years agoperldelta for prototype($1)
Father Chrysostomos [Fri, 8 Jun 2012 06:35:16 +0000 (23:35 -0700)]
perldelta for prototype($1)

9 years agoperldelta for open, <&, and $1
Father Chrysostomos [Fri, 8 Jun 2012 06:31:39 +0000 (23:31 -0700)]
perldelta for open, <&, and $1

9 years agoperldelta for UNIVERSAL::can($num,...)
Father Chrysostomos [Fri, 8 Jun 2012 06:28:42 +0000 (23:28 -0700)]
perldelta for UNIVERSAL::can($num,...)

9 years agoperldelta for ‘Not a format ref’
Father Chrysostomos [Fri, 8 Jun 2012 06:25:39 +0000 (23:25 -0700)]
perldelta for ‘Not a format ref’

9 years agoperldelta for B::COP::stashpv and utf8/nulls
Father Chrysostomos [Fri, 8 Jun 2012 06:23:19 +0000 (23:23 -0700)]
perldelta for B::COP::stashpv and utf8/nulls

9 years agoperldelta for B::COP::stashoff
Father Chrysostomos [Fri, 8 Jun 2012 06:22:41 +0000 (23:22 -0700)]
perldelta for B::COP::stashoff

9 years agoperldelta for caller crashing on SvOOK str
Father Chrysostomos [Fri, 8 Jun 2012 06:20:52 +0000 (23:20 -0700)]
perldelta for caller crashing on SvOOK str

9 years agoperldelta for cop_stashoff
Father Chrysostomos [Fri, 8 Jun 2012 06:17:22 +0000 (23:17 -0700)]
perldelta for cop_stashoff

9 years agoperldelta for #78742 — eval "__PACKAGE__"
Father Chrysostomos [Fri, 8 Jun 2012 03:02:19 +0000 (20:02 -0700)]
perldelta for #78742 — eval "__PACKAGE__"

9 years agoperldelta: fix pod syntax
Father Chrysostomos [Fri, 8 Jun 2012 02:54:36 +0000 (19:54 -0700)]
perldelta: fix pod syntax

9 years agoperldelta for rv2cv not cloning closures
Father Chrysostomos [Fri, 8 Jun 2012 01:01:07 +0000 (18:01 -0700)]
perldelta for rv2cv not cloning closures

9 years agoperldelta for ‘Runaway prototype’ removal
Father Chrysostomos [Thu, 7 Jun 2012 23:14:18 +0000 (16:14 -0700)]
perldelta for ‘Runaway prototype’ removal

9 years agoperldelta for study code removal
Father Chrysostomos [Thu, 7 Jun 2012 23:12:49 +0000 (16:12 -0700)]
perldelta for study code removal

9 years agoperldelta for #113060
Father Chrysostomos [Thu, 7 Jun 2012 23:10:36 +0000 (16:10 -0700)]
perldelta for #113060

9 years agoperldelta for #97478
Father Chrysostomos [Thu, 7 Jun 2012 22:59:59 +0000 (15:59 -0700)]
perldelta for #97478

9 years agoperldelta tweaks
Father Chrysostomos [Thu, 7 Jun 2012 21:57:06 +0000 (14:57 -0700)]
perldelta tweaks

9 years agoperldelta for new coresubs
Father Chrysostomos [Thu, 7 Jun 2012 21:56:32 +0000 (14:56 -0700)]
perldelta for new coresubs

9 years agoperldelta for #111782
Father Chrysostomos [Thu, 7 Jun 2012 17:02:29 +0000 (10:02 -0700)]
perldelta for #111782

9 years agoperldelta for #76546
Father Chrysostomos [Thu, 7 Jun 2012 16:57:28 +0000 (09:57 -0700)]
perldelta for #76546

9 years agoperldelta for #9423
Father Chrysostomos [Thu, 7 Jun 2012 16:44:57 +0000 (09:44 -0700)]
perldelta for #9423

9 years agoperldelta for #111510
Father Chrysostomos [Thu, 7 Jun 2012 16:42:24 +0000 (09:42 -0700)]
perldelta for #111510

9 years agocop.h: Clarify comment
Father Chrysostomos [Wed, 6 Jun 2012 22:55:16 +0000 (15:55 -0700)]
cop.h: Clarify comment

9 years agoper the request of the metacpan crew, cc them on release
Ricardo Signes [Fri, 8 Jun 2012 01:58:31 +0000 (21:58 -0400)]
per the request of the metacpan crew, cc them on release

9 years agoUCD.t: Cope with $/ being set.
Karl Williamson [Thu, 7 Jun 2012 18:28:54 +0000 (12:28 -0600)]
UCD.t: Cope with $/ being set.

These tests fail in some earlier Unicode versions because $/ is being
set.  Reset it to $/ around the reads and chomps this .t does.

9 years agoRevert "UCD.t: Don't use BEL for $/"
Karl Williamson [Mon, 4 Jun 2012 15:08:19 +0000 (09:08 -0600)]
Revert "UCD.t: Don't use BEL for $/"

This reverts commit 9a8e4a54f8b3668a7ebd8f229cdfb405a1dce77c.  It turns
out that the reason this was there was to add a stress test.  Outside
setting of $/ should not break Unicode::UCD

9 years agomktables: Use initialize instead of a push
Karl Williamson [Mon, 4 Jun 2012 15:06:07 +0000 (09:06 -0600)]
mktables: Use initialize instead of a push

The code later on used to be done only sometimes; now that it is
executed always, some of it can be done at initialization time.

9 years agoSync the version of Perl-Perldoc in Maintainers.pl with CPAN
Chris 'BinGOs' Williams [Thu, 7 Jun 2012 19:06:26 +0000 (20:06 +0100)]
Sync the version of Perl-Perldoc in Maintainers.pl with CPAN

9 years agoutf8.c: White-space only
Karl Williamson [Wed, 6 Jun 2012 21:56:09 +0000 (15:56 -0600)]
utf8.c: White-space only

9 years agoutf8.c: Refactor a portion of to_utf8_case()
Karl Williamson [Wed, 6 Jun 2012 21:50:53 +0000 (15:50 -0600)]
utf8.c: Refactor a portion of to_utf8_case()

This routine can never return 0, as if there is no case mapping, the
input is used instead.  The code point for that input has already been
derived earlier in the function, so it doesn't have to be recalculated.
And, rearrange the order of things slightly.

9 years agoutf8.c: Avoid some extra work
Karl Williamson [Wed, 6 Jun 2012 21:40:38 +0000 (15:40 -0600)]
utf8.c: Avoid some extra work

In the case changed, the output is the input, so can just Copy it
instead of re-deriving it.

9 years agoutf8.c: Add, revise comments
Karl Williamson [Wed, 6 Jun 2012 21:40:02 +0000 (15:40 -0600)]
utf8.c: Add, revise comments

9 years agodocs patch: 'unicode_strings' doesn't change utf8ness
Karl Williamson [Wed, 6 Jun 2012 17:12:24 +0000 (11:12 -0600)]
docs patch: 'unicode_strings' doesn't change utf8ness

We had a field report of lack of clarity around this, so add some
text.

9 years agoperlfunc: Add comma
Karl Williamson [Wed, 6 Jun 2012 17:11:34 +0000 (11:11 -0600)]
perlfunc: Add comma

9 years agoRemove droppings from t/
Father Chrysostomos [Thu, 7 Jun 2012 15:28:01 +0000 (08:28 -0700)]
Remove droppings from t/

I accidentally added these when resolving merge conflicts.

9 years ago[Merge] SvPOK bug hunt
Father Chrysostomos [Thu, 7 Jun 2012 15:19:32 +0000 (08:19 -0700)]
[Merge] SvPOK bug hunt

Spurred on by a comment in ticket #109542, I went looking for misuse
of SvPOK, where SvPOKp should be used instead (since variables with
get-magic don’t have SvPOK set).

I discovered a few bugs like that, plus many more bugs that were sim-
ilar, but not quite the same.

9 years agoMake warn treat $@=3 and $@="3" the same
Father Chrysostomos [Thu, 7 Jun 2012 06:19:47 +0000 (23:19 -0700)]
Make warn treat $@=3 and $@="3" the same

If we get this:

$ ./perl -Ilib -e '$@ = "3"; warn'
3 ...caught at -e line 1.

then we shouldn’t get this:

$ ./perl -Ilib -e '$@ = 3; warn'
Warning: something's wrong at -e line 1.

as the two scalars hold the same value.

9 years agopp.c:pp_negate: Move looks_like_number where it matters
Father Chrysostomos [Thu, 7 Jun 2012 06:07:18 +0000 (23:07 -0700)]
pp.c:pp_negate: Move looks_like_number where it matters

Since we already have a check further down to see whether a string
begins with an identifier or sign, and since looks_like_number
was added for strings representing negative numbers, move the
looks_like_number down to where we already know the string
begins with '-'.

This is a micro-optimisation, but it also makes the code more
straightforward (to me at least).

This happens to let magical integers-as-strings fall down to code that
they used not to reach, so that has to change to account.

9 years agopp_negate: Support magic big ints as strings
Father Chrysostomos [Thu, 7 Jun 2012 06:05:24 +0000 (23:05 -0700)]
pp_negate: Support magic big ints as strings

-$1 was treating $1 as a float even if the string consisted of an
integer, due to incorrect flag checks.  It was doing the same things
with tied variables returning str+int dualvars.

Simply checking whether the privates flags consist solely of SVp_IOK
(which works for tie variables returning pure integers--so I wasn’t
entirely wrong in adding that logic a few commits ago), isn’t suffi-
cient. For gmagical variables that have already had get-magic called
on them, the private flags are equivalent to public flags for other
variables.

9 years agopp_negate and the Unicode Bug
Father Chrysostomos [Wed, 6 Jun 2012 22:54:08 +0000 (15:54 -0700)]
pp_negate and the Unicode Bug

$ ./perl -Ilib -Mutf8 -CO -le 'print -"3 apples"'
-3
$ ./perl -Ilib -Mutf8 -CO -le 'print -"3 μῆλα"'
-3 μῆλα

This has been this way since 5.10.1.  In 5.10.0, it was consistent:

$ perl5.10.0 -Mutf8 -CO -le 'print -"3 apples"'
-3
$ perl5.10.0 -Mutf8 -CO -le 'print -"3 μῆλα"'
-3

But the worst part is that we get a non-numeric warning now for a
string operation:

$ perl5.10.1 -Mutf8 -CO -lwe 'print -"3 μῆλα"'
Argument "\x{33}\x{20}..." isn't numeric in negation (-) at -e line 1.
-3 μῆλα

This goes back to commit a43d94f2c089, which by itself looks perfectly
correct (I won’t quote the diff here, as it is long; but it doesn’t
touch pp_negate):

commit a43d94f2c089c6f14197795daeebb7835550a747
Author: Nicholas Clark <nick@ccl4.org>
Date:   Mon Jan 7 18:24:39 2008 +0000

    Don't set the public IV or NV flags if the string converted from has
    trailing garbage. This behaviour is consistent with not setting the
    public IV or NV flags if the value is out of range for the type.

    p4raw-id: //depot/perl@32894

It seems that pp_negate was already buggy before that (or ‘validly’
assumed that numeric coercion would set public flags).  And it looks
as though commit 8eb28a70b2e is at fault here.

It changed this:

$ perl5.6.2 -Mutf8 -lwe 'print -"ð"'


to this:

$ perl5.8.1 -Mutf8 -lwe 'print -"ð"'
Argument "\x{f0}" isn't numeric in negation (-) at -e line 1.
0

to comply with what happens when the UTF8 flag is not set.  But it was
relying on bugs in sv_2iv, etc.

So, from 5.8.0 to 5.10.0 inclusive, unary negation prepends "-" if the
string begins with [A-Za-z], but from 5.10.1 onwards it behaves diffe-
rently depending on the internal UTF8 flag (even prepending "-" to
ASCII-only strings like "%apples" if the UTF8 flag is on).

This commit restores the 5.8.0-5.10.0 behaviour, which was at least
self-consistent.

9 years agoFix perl #57706 for magical vars: -"-10"
Father Chrysostomos [Wed, 6 Jun 2012 19:49:05 +0000 (12:49 -0700)]
Fix perl #57706 for magical vars: -"-10"

Commit a5b92898 caused -"-10" to return 10, not "+10".  But it wasn’t
working for magical variables.

SvIV_please_nomg was fixed recently for magical variables, but not
SvIV_please, so change pp_negate to use that.

(Ironically, SvIV_please has never called magic, so the
SvIV_please_nomg variant never needed to exist.  So the two could
be merged.)

9 years agopp_negate: Don’t treat nummified str as num
Father Chrysostomos [Wed, 6 Jun 2012 05:38:12 +0000 (22:38 -0700)]
pp_negate: Don’t treat nummified str as num

I think it’s a bug that this prints 0:

$ ./perl -lIlib -MDevel::Peek -e '$x = "dogs"; 0+$x; Dump $x; print -$x'
SV = PVNV(0x802340) at 0x821b90
  REFCNT = 1
  FLAGS = (POK,pIOK,pNOK,pPOK)
  IV = 0
  NV = 0
  PV = 0x301620 "dogs"\0
  CUR = 4
  LEN = 16
0

This variable is a string, not a number.  The number 0 is just a
cached value.  It lacks the IOK flag precisely because the IV is not
representative of the actual value of the scalar.

This logic here is a little bit odd:

        if( !SvNIOK( sv ) && looks_like_number( sv ) ){
           SvIV_please( sv );
        }

if ((flags & SVf_IOK) || ((flags & (SVp_IOK | SVp_NOK)) == SVp_IOK)) {

SvIV_please sets the flags on sv but then they are ignored when check-
ing for integrality.

To fix the bug mentioned above, I had to change this logic to use sv
directly, rather than the saved flags.

That meant that this bug was also fixed at the same time, since the
integer code is no longer bypassed when it is SvIV_please that sets
the integer flags:

$ ./perl -Ilib -le 'print -97656250000000000'
-97656250000000000
$ ./perl -Ilib -le 'print -"97656250000000000"'
-9.765625e+16

9 years ago[perl #109542] Make num ops treat $1 as "$1"
Father Chrysostomos [Wed, 6 Jun 2012 03:09:32 +0000 (20:09 -0700)]
[perl #109542] Make num ops treat $1 as "$1"

Numeric ops were not taking magical variables into account.  So $1 (a
magical variable) would be treated differently from "$1" (a non-magi-
cal variable0.

In determining whether to use an integer operation, they would call
SvIV_please_nomg, and then check whether the sv was SvIOK as a result.

SvIV_please_nomg would call SvIV_nomg if the sv were SvPOK or SvNOK.

The problem here is that gmagical variables are never SvIOK, but
only SvIOKp.

In fact, the private flags are used differently for gmagical and non-
magical variables.  For non-gmagical variables, the private flag indi-
cates that there is a cached value.  If the public flag is not set,
then the cached value is imprecise.  For gmagical variables, imprecise
values are never cached; only the private flags are used, and they are
equivalent to the public flags on non-gmagical variables.

This commit changes SvIV_please_nomg to take gmagical variables
into account, using the newly-added sv_gmagical_2iv_please (see the
docs for it in the diff).  SvIV_please_nomg now returns true or
false, not void, since a subsequent SvIOK is not reliable.  So
‘SvIV_please_nomg(sv); if(SvIOK)’ becomes ‘if(SvIV_please_nomg(sv))’.

9 years agoMake warn handle magic vars (fixes [perl #97480])
Father Chrysostomos [Sun, 27 May 2012 07:11:31 +0000 (00:11 -0700)]
Make warn handle magic vars (fixes [perl #97480])

pp_warn was checking flags before calling get-magic, resulting in sev-
eral bugs that I fixed all at once::
• warn now calls get-magic exactly once on its argument, when there
  is just one argument (it always worked correctly for multiple)
  [perl #97480].
• warn calls get-magic exactly once on $@ when falling back to it,
  instead of zero times.
• A tied variable returning an object that stringifies as an empty
  string is no longer ignored if the tied variable was not ROK
  before FETCH.
• A tied $@ containing a string, or $@ aliased to $1, is no
  longer ignored.
• A tied $@ that last returned a reference but will return a string on
  the next FETCH now gets "\t...caught" appended.

9 years agoMake prototype call FETCH before checking CORE:: prefix
Father Chrysostomos [Sat, 26 May 2012 13:00:01 +0000 (06:00 -0700)]
Make prototype call FETCH before checking CORE:: prefix

$ perl5.16.0 -e '"CORE::length" =~ /(.*)/; warn prototype $1;'
Warning: something's wrong at -e line 1.
$ perl5.16.0 -e 'warn prototype "CORE::length"'
_ at -e line 1.

Since sv_2cv calls get-magic, the easiest solution is to copy the
argument if it is magical.

9 years agoMake strict refs report $1 the same way as "$1"
Father Chrysostomos [Sat, 26 May 2012 05:44:39 +0000 (22:44 -0700)]
Make strict refs report $1 the same way as "$1"

A magical variable is never SvPOK, but only SvPOKp.  The code that
determined whether to put an ellipsis mark after a truncated symbol
name was only checking SvPOK, resulting in this discrepancy:

$ perl5.15.9 -e 'use strict; *{"a"x40}'
Can't use string ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"...) as a symbol ref while "strict refs" in use at -e line 1.
$ perl5.15.9 -e 'use strict; ("a"x40)=~/(.*)/; *{$1}'
Can't use string ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as a symbol ref while "strict refs" in use at -e line 1.
$ perl5.15.9 -e 'use strict; ${"a"x40}'
Can't use string ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"...) as a SCALAR ref while "strict refs" in use at -e line 1.
$ perl5.15.9 -e 'use strict; ("a"x40)=~/(.*)/; ${$1}'
Can't use string ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as a SCALAR ref while "strict refs" in use at -e line 1.

SvPOK variables are also SvPOKp, so checking just the latter suffices.

9 years agoMake open(... "<&", $fileno) respect magic
Father Chrysostomos [Fri, 25 May 2012 06:13:37 +0000 (23:13 -0700)]
Make open(... "<&", $fileno) respect magic

A magical variable is never SvPOK, but only SvPOKp.  The code for
checking whether a duplicatee is a numeric file descriptor was only
checking SvPOK.  So a regular variable containing a fileno-as-a-string
would work, such as the $a below, as would a stringified magical vari-
able ("$1"), but not $1 itself.

$ echo foo | perl -le '$a = "0"; open a, "<&", $a; warn <a>'
foo
$ echo foo | perl -le '"0" =~ /(.)/; open a, "<&", $1; warn <a>'
Can't use an undefined value as filehandle reference at -e line 1.
$ echo foo | perl -le '"0" =~ /(.)/; open a, "<&", "$1"; warn <a>'
foo

SvPOK variables are also SvPOKp, so checking only the latter suffices.

9 years agoutil.c:report_evil_fh: Report name w/initial null
Father Chrysostomos [Fri, 25 May 2012 05:46:56 +0000 (22:46 -0700)]
util.c:report_evil_fh: Report name w/initial null

In the error message, we shouldn’t omit a handle whose name begins
with "\0", but, rather, a handle whose name has no length to it.