This is a live mirror of the Perl 5 development currently hosted at
9 years agoAdd the generated Acknowledgements section to perldelta
Dave Rolsky [Mon, 17 Dec 2012 18:23:42 +0000 (12:23 -0600)]
Add the generated Acknowledgements section to perldelta

9 years agoRemove all the boilerplate notes from perldelta
Dave Rolsky [Mon, 17 Dec 2012 18:21:17 +0000 (12:21 -0600)]
Remove all the boilerplate notes from perldelta

9 years agoLook up RT authors in the DATA section aliases as well as AUTHORS
Dave Rolsky [Mon, 17 Dec 2012 18:20:47 +0000 (12:20 -0600)]
Look up RT authors in the DATA section aliases as well as AUTHORS

This patch is a little gross but if fixes a bug where an author wasn't found
at all. The author in question was in the git log as "bulk88 (via RT)
<>". Note the lack of a name before the "(via RT)"

This whole thing is a bit of a mess. I think this whole script could be
re-organized in a simpler way, perhaps.

9 years agoWork in progress on perldelta for 23b7025ebc
Dave Rolsky [Mon, 17 Dec 2012 17:46:13 +0000 (11:46 -0600)]
Work in progress on perldelta for 23b7025ebc

I still need to figure out what some of the changes described in
actually mean.

9 years agouse PERL_UNUSED_VAR rather than PERL_UNUSED_DECL
David Mitchell [Mon, 17 Dec 2012 14:53:11 +0000 (14:53 +0000)]

PERL_UNUSED_DECL doesn't do anything under g++, so doing this silences
some g++ warnings.

9 years agoUpdate ExtUtils-MakeMaker to CPAN version 6.64
Chris 'BinGOs' Williams [Mon, 17 Dec 2012 09:46:37 +0000 (09:46 +0000)]
Update ExtUtils-MakeMaker to CPAN version 6.64


  6.64  Sun Dec 16 18:27:40 PST 2012
    Build Fixes
    * Update the home page in the meta file. has been
      unmaintained for a while.

  6.63_04  Thu Nov 22 13:18:06 PST 2012
    Test Fixes
    * Eliminated the problematic and not very useful PASTHRU test
      on Windows.  A better test will come after stable. [github 41]
      (Michael G Schwern)
    * Avoid a new regex warning in 5.17.x in t/MM_OS2.t. (Craig A. Berry)

    VMS Fixes
    * Better ignore files due to non-case-preserving filesystems.
      (Craig A. Berry)

9 years agoUpdate Scalar-List-Utils to CPAN version 1.26
Chris 'BinGOs' Williams [Mon, 17 Dec 2012 09:35:15 +0000 (09:35 +0000)]
Update Scalar-List-Utils to CPAN version 1.26


  1.26 -- Sun Dec 16 19:39

    * Merge patch from JDHEDDEN - Add Scalar::Util::isdual() RT#76150

  1.25_01 -- Wed Nov 21 09:47

    * Fix a hash order dependency bug t/tainted.t
      (Currently this is a core only version to fix perl5 smokes)

9 years agoGDBM_File must cast fatal_func appropriately for the version of gdbm.h
Nicholas Clark [Mon, 17 Dec 2012 09:31:11 +0000 (10:31 +0100)]
GDBM_File must cast fatal_func appropriately for the version of gdbm.h

The fifth argument to gdbm_open() is an optional callback function for fatal
errors. The prototype for this function has changed between gdbm 1.8.3 and
1.9.0, from void (*)() to void(*)(const char *). This distinction doesn't
matter to a C compiler, but does to a C++ compiler, which we use to test the
core build. So, cast appropriately, depending on the version macros in

9 years agoskip the \N{...} unloaded charnames croak test when PERL_UNICODE set
Tony Cook [Mon, 17 Dec 2012 09:06:47 +0000 (20:06 +1100)]
skip the \N{...} unloaded charnames croak test when PERL_UNICODE set

This has been causing failures for a while.

9 years agoSKIP in run_multiple_progs() was parsed but unimplemented, implement it
Tony Cook [Mon, 17 Dec 2012 09:05:56 +0000 (20:05 +1100)]
SKIP in run_multiple_progs() was parsed but unimplemented, implement it

9 years agofix the debugger t expr command regression
Tony Cook [Mon, 17 Dec 2012 08:19:32 +0000 (19:19 +1100)]
fix the debugger t expr command regression

9 years agorough TODO test for t expr
Tony Cook [Mon, 17 Dec 2012 08:09:34 +0000 (19:09 +1100)]
rough TODO test for t expr

9 years agoMake DosGlob.t more resilient
Father Chrysostomos [Mon, 17 Dec 2012 01:00:45 +0000 (17:00 -0800)]
Make DosGlob.t more resilient

If the sv count goes *down* (which doesn’t happen on my machine, but see
<>), we
certainly don’t have a leak.

9 years agoperl5180delta: Mention 2 more broken+patched modules
Father Chrysostomos [Sun, 16 Dec 2012 14:21:02 +0000 (06:21 -0800)]
perl5180delta: Mention 2 more broken+patched modules

9 years agoeliminate PL_regsize
David Mitchell [Sat, 15 Dec 2012 00:31:40 +0000 (00:31 +0000)]
eliminate PL_regsize

This var (or rather PL_reg_state.re_state_regsize, which it is #deffed to)
just holds the index of the maximum opening paren index seen so far in
S_regmatch(). So make it a local var of S_regmatch() and pass it as a
param to the couple of static functions called from there that need it.

(Also give the local var the more meaningful name 'maxopenparen'.)

9 years agomktables, regexec.c: Comments, white-space; no code changes
Karl Williamson [Sun, 16 Dec 2012 18:57:09 +0000 (11:57 -0700)]
mktables, regexec.c: Comments, white-space; no code changes

9 years agoRename property involved in \X matching, for clarity
Karl Williamson [Sun, 16 Dec 2012 18:50:34 +0000 (11:50 -0700)]
Rename property involved in \X matching, for clarity

I was re-reading some code and got confused.  This table matches just
the first character of a sequence that may or may not contain others.

9 years agoregen/ Add option to skip if undef
Karl Williamson [Sun, 16 Dec 2012 15:56:28 +0000 (08:56 -0700)]
regen/ Add option to skip if undef

I thought I would need this new functionality in this regen script, but
ended up going a different route.  But just in case someone might find
this useful in the future, here it is.

9 years agoregexec.c: More efficient Korean \X processing
Karl Williamson [Sat, 15 Dec 2012 16:53:19 +0000 (09:53 -0700)]
regexec.c: More efficient Korean \X processing

This refactors the code slightly that checks for Korean precomposed
syllables in \X.  It eliminates the PL_variable formerly used to keep
track of things.

9 years agoregexec.c: Move #defines to earlier in the file
Karl Williamson [Sat, 15 Dec 2012 16:42:36 +0000 (09:42 -0700)]
regexec.c: Move #defines to earlier in the file

They will be used in a later commit earlier.  This also changes the
wording of the comment slightly to give more explanation, since the
context they are now found in is different

9 years agoAdded Sergey Alekseev to AUTHORS
Chris 'BinGOs' Williams [Sun, 16 Dec 2012 10:31:07 +0000 (10:31 +0000)]
Added Sergey Alekseev to AUTHORS

9 years agoCorrect typo in perlreftut
Sergey Alekseev [Sun, 16 Dec 2012 10:29:31 +0000 (10:29 +0000)]
Correct typo in perlreftut

Signed-off-by: Chris 'BinGOs' Williams <>
9 years agoadd lib/File/ to .gitignore
Yves Orton [Sat, 15 Dec 2012 21:09:36 +0000 (22:09 +0100)]
add lib/File/ to .gitignore

The master version of the file now lives in ext

9 years agoFix missing argument in sprintf in Socket.xs
Yves Orton [Sat, 15 Dec 2012 20:59:43 +0000 (21:59 +0100)]
Fix missing argument in sprintf in Socket.xs

Shows up as:
  Socket.xs:919:16: warning: more '%' conversions than data arguments [-Wformat]
  Socket.xs:925:16: warning: more '%' conversions than data arguments [-Wformat]

This bumps the version as well.

9 years agoSilence a warning under clang/asan
Yves Orton [Sat, 15 Dec 2012 20:55:47 +0000 (21:55 +0100)]
Silence a warning under clang/asan

This should silence the following warning:

dump.c:459:57: warning: comparison of constant 85 with expression of
   type 'svtype' is always false [-Wtautological-constant-out-of-range-compare]

The warning is a false positive, this code is /meant/ to detect
conditions that should not happen.

9 years agoUpdate IO-Compress to CPAN version 2.059
Chris 'BinGOs' Williams [Sat, 15 Dec 2012 19:50:36 +0000 (19:50 +0000)]
Update IO-Compress to CPAN version 2.059


  2.059 10 December 2012

      * IO::Compress::Base
        Added "Encode" option.

9 years agoAdd regression tests for split on string of single wordspace or hex20.
James E Keenan [Sat, 15 Dec 2012 03:00:22 +0000 (22:00 -0500)]
Add regression tests for split on string of single wordspace or hex20.

For:  RT #116086

9 years agoperldelta: Add to-do note for hash changes
Father Chrysostomos [Sat, 15 Dec 2012 14:56:03 +0000 (06:56 -0800)]
perldelta: Add to-do note for hash changes

I don’t have time for this right now, and I might not for two or three
days, so make sure it is not forgotten.

9 years agoperldelta for glob changes
Father Chrysostomos [Sat, 15 Dec 2012 14:54:05 +0000 (06:54 -0800)]
perldelta for glob changes

9 years agoknown_pod_issues.dat: Allow links to Devel::Callsite
Father Chrysostomos [Sat, 15 Dec 2012 14:53:24 +0000 (06:53 -0800)]
known_pod_issues.dat: Allow links to Devel::Callsite

9 years agoperldelta for bb4784f00 (Constant(undef))
Father Chrysostomos [Sat, 15 Dec 2012 14:45:57 +0000 (06:45 -0800)]
perldelta for bb4784f00 (Constant(undef))

9 years agoperldelta for 67a057d6d8 (charnames crash)
Father Chrysostomos [Sat, 15 Dec 2012 14:42:46 +0000 (06:42 -0800)]
perldelta for 67a057d6d8 (charnames crash)

9 years agoperldelta for 230834321 (renamed stashes; m??; reset)
Father Chrysostomos [Sat, 15 Dec 2012 14:40:40 +0000 (06:40 -0800)]
perldelta for 230834321 (renamed stashes; m??; reset)

9 years agoperldelta for 55b37f1c31 (goto $tied)
Father Chrysostomos [Sat, 15 Dec 2012 14:38:46 +0000 (06:38 -0800)]
perldelta for 55b37f1c31 (goto $tied)

9 years agoperldelta for f5eec17c/#115818
Father Chrysostomos [Sat, 15 Dec 2012 14:37:33 +0000 (06:37 -0800)]
perldelta for f5eec17c/#115818

9 years agoperldelta for 90b58ec9e (deprecate lexical $_)
Father Chrysostomos [Sat, 15 Dec 2012 14:36:02 +0000 (06:36 -0800)]
perldelta for 90b58ec9e (deprecate lexical $_)

9 years agoperldelta for 4e52a9b69 and db9306af4 (local *method=...)
Father Chrysostomos [Sat, 15 Dec 2012 14:25:50 +0000 (06:25 -0800)]
perldelta for 4e52a9b69 and db9306af4 (local *method=...)

9 years agoperldelta: 3d460042 fixed more local *ISA bugs
Father Chrysostomos [Sat, 15 Dec 2012 14:23:43 +0000 (06:23 -0800)]
perldelta: 3d460042 fixed more local *ISA bugs

9 years agoperldelta for 959f7ad7 (local *Detached::method)
Father Chrysostomos [Sat, 15 Dec 2012 14:22:57 +0000 (06:22 -0800)]
perldelta for 959f7ad7 (local *Detached::method)

9 years agoperldelta for 978a498e (PL_sub_generation++)
Father Chrysostomos [Sat, 15 Dec 2012 14:20:12 +0000 (06:20 -0800)]
perldelta for 978a498e (PL_sub_generation++)

9 years agoperldelta for 6e1b2de7 (localised glob assignment)
Father Chrysostomos [Sat, 15 Dec 2012 14:17:49 +0000 (06:17 -0800)]
perldelta for 6e1b2de7 (localised glob assignment)

9 years agoperldelta for cows sawing ampersands
Father Chrysostomos [Sat, 15 Dec 2012 14:12:25 +0000 (06:12 -0800)]
perldelta for cows sawing ampersands

9 years agoperldelta for de0df3c09/#23180
Father Chrysostomos [Sat, 15 Dec 2012 13:55:26 +0000 (05:55 -0800)]
perldelta for de0df3c09/#23180

9 years agoperldelta for ee0832cea (lexical constant warnings)
Father Chrysostomos [Sat, 15 Dec 2012 13:50:57 +0000 (05:50 -0800)]
perldelta for ee0832cea (lexical constant warnings)

9 years agoperldelta for 4ded55f35 (lexical constants)
Father Chrysostomos [Sat, 15 Dec 2012 13:50:00 +0000 (05:50 -0800)]
perldelta for 4ded55f35 (lexical constants)

9 years agoperldelta for lexsub warnings
Father Chrysostomos [Sat, 15 Dec 2012 13:48:22 +0000 (05:48 -0800)]
perldelta for lexsub warnings

9 years agoperldelta: Blanket entry for memory leaks
Father Chrysostomos [Sat, 15 Dec 2012 13:41:46 +0000 (05:41 -0800)]
perldelta: Blanket entry for memory leaks

9 years agoperldelta for f6f93f805 (circular blessings)
Father Chrysostomos [Sat, 15 Dec 2012 13:38:07 +0000 (05:38 -0800)]
perldelta for f6f93f805 (circular blessings)

9 years agoperldelta for 2f43ddf1e (sort {undef})
Father Chrysostomos [Sat, 15 Dec 2012 13:35:20 +0000 (05:35 -0800)]
perldelta for 2f43ddf1e (sort {undef})

9 years agoUse SvREFCNT_dec_NN in one place in hv.h
Father Chrysostomos [Thu, 13 Dec 2012 14:05:33 +0000 (06:05 -0800)]
Use SvREFCNT_dec_NN in one place in hv.h

In this instance, we know that av is not null, so no need to check
whether it is

9 years exceptions
Father Chrysostomos [Thu, 13 Dec 2012 13:46:09 +0000 (05:46 -0800)] exceptions

9 years agoUpdate Unicode-Collate to CPAN version 0.96
Chris 'BinGOs' Williams [Sat, 15 Dec 2012 13:29:13 +0000 (13:29 +0000)]
Update Unicode-Collate to CPAN version 0.96


  0.96  Sat Dec 15 19:43:10 2012
    - special noncharancter tailorings ('highestFFFF' and 'minimalFFFE')
      * some locales are modified for 'highestFFFF': as, bn, fa, gu, hi, hy,
        kn, kok, mr, or, sa, si, si_dict, ta, te, th, ur.
    - U::C::Locale now allows 'entry' to add or override mappings.
    - bug fix: using DUCET through XS wrongly prevented completely ignorable
      characters from tailoring.
    - modified tests: default.t, loc_as.t, loc_bn.t, loc_fa.t, loc_gu.t,
      loc_hi.t, loc_hy.t, loc_kn.t, loc_kok.t, loc_mr.t, loc_or.t, loc_sa.t,
      loc_si.t, loc_sidt.t, loc_ta.t, loc_te.t, loc_test.t, loc_th.t,
      loc_ur.t, nonchar.t in t.

9 years agot/op/inc.t: Add descriptions to all tests lacking them.
James E Keenan [Mon, 10 Dec 2012 01:13:56 +0000 (20:13 -0500)]
t/op/inc.t: Add descriptions to all tests lacking them.

9 years agot/op/grent.t: Provide descriptions for tests lacking them.
James E Keenan [Sun, 9 Dec 2012 22:25:49 +0000 (17:25 -0500)]
t/op/grent.t: Provide descriptions for tests lacking them.

9 years agot/op/goto.t: Provide descriptions for remaining tests lacking them.
James E Keenan [Sun, 9 Dec 2012 14:27:28 +0000 (09:27 -0500)]
t/op/goto.t: Provide descriptions for remaining tests lacking them.

Focus of these descriptions:  Simply enable user to more easily locate tests
in file.

9 years agot/op/filetest.t: Provide descriptions for remaining tests lacking them.
James E Keenan [Sun, 9 Dec 2012 14:03:21 +0000 (09:03 -0500)]
t/op/filetest.t: Provide descriptions for remaining tests lacking them.

9 years agot/op/filehandle.t: Provide descriptions for all tests.
James E Keenan [Sun, 9 Dec 2012 13:26:21 +0000 (08:26 -0500)]
t/op/filehandle.t: Provide descriptions for all tests.

Remove misleading inline comment (dupe of comment in t/op/filetest.t).

9 years agot/op/each_array.t: Provide descriptions for all tests.
James E Keenan [Sun, 9 Dec 2012 03:18:03 +0000 (22:18 -0500)]
t/op/each_array.t: Provide descriptions for all tests.

9 years agot/op/dor.t: Provide descriptions for tests still lacking them.
James E Keenan [Sat, 8 Dec 2012 20:50:18 +0000 (15:50 -0500)]
t/op/dor.t: Provide descriptions for tests still lacking them.

9 years agot/op/die_unwind.t: Provide descriptions for some tests.
James E Keenan [Sat, 8 Dec 2012 20:38:56 +0000 (15:38 -0500)]
t/op/die_unwind.t: Provide descriptions for some tests.

9 years agot/op/die_except.t: Add description for each test.
James E Keenan [Sat, 8 Dec 2012 20:09:57 +0000 (15:09 -0500)]
t/op/die_except.t: Add description for each test.

9 years agofurther fix to SvUPGRADE
David Mitchell [Fri, 14 Dec 2012 21:28:02 +0000 (21:28 +0000)]
further fix to SvUPGRADE

The change to SvUPGRADE introduced by 463ea2290a54e a few commits ago
to silence a warning with clang, broke g++ builds instead. Here's
a second attempt to keep everyone happy.

Basically it avoids warnings from all of gcc, g++ and clang for the two


But still breaks

    if (!SvUPGRADE(...) { croak(...); }

which I don't care about.

9 years agoAdd diagnostics for PERL_HASH_SEED warning
Yves Orton [Fri, 14 Dec 2012 22:14:48 +0000 (23:14 +0100)]
Add diagnostics for PERL_HASH_SEED warning

9 years agoUse the right warn routine
Yves Orton [Fri, 14 Dec 2012 21:34:26 +0000 (22:34 +0100)]
Use the right warn routine

9 years agowarn if PERL_HASH_SEED contains an unexpected character
Yves Orton [Fri, 14 Dec 2012 20:44:07 +0000 (21:44 +0100)]
warn if PERL_HASH_SEED contains an unexpected character

9 years agoslight update to perldelta for SvUPGRADE
David Mitchell [Fri, 14 Dec 2012 15:36:11 +0000 (15:36 +0000)]
slight update to perldelta for SvUPGRADE

9 years agomake SvUPGRADE() a statement.
David Mitchell [Fri, 14 Dec 2012 15:05:40 +0000 (15:05 +0000)]
make SvUPGRADE() a statement.

To guote the perldelta entry:

SvUPGRADE() is no longer an expression. Originally this macro (and its
underlying function, sv_upgrade()) were documented as boolean, although
in reality they always croaked on error and never returned false. In 2005
the documentation was updated to specify a void return value, but
SvUPGRADE() was left always returning 1 for backwards compatibility. This
has now been removed, and SvUPGRADE() is now a statement with no return

So this is now a syntax error:

    if (!SvUPGRADE(sv)) { croak(...); }

If you have code like that, simply replace it with


9 years agoMore fun escaping dots in tovmsspec.
Craig A. Berry [Fri, 14 Dec 2012 14:29:55 +0000 (08:29 -0600)]
More fun escaping dots in tovmsspec.

c1abd561a0a322 avoided the double escaping of dots in filenames,
but failed to copy the dot itself in cases where it was already
escaped.  Plus, when not using extended file specifications and
thus converting the dot to an underscore, we need to make sure
the underscore is not escaped.

And add a test that covers most of these scenarios.  Probably
more tests are needed.

9 years agoregcomp.c: silence some compiler warnings
David Mitchell [Fri, 14 Dec 2012 11:55:45 +0000 (11:55 +0000)]
regcomp.c: silence some compiler warnings

ReREFCNT_inc() returns a value, so cast it to void where not used.

9 years agoTypemap.xs: fix warning under clang
David Mitchell [Fri, 14 Dec 2012 11:50:08 +0000 (11:50 +0000)]
Typemap.xs: fix warning under clang

Trivial type issue in croak format

9 years agoRemove BeOS special-casing from Configure.
Nicholas Clark [Thu, 29 Nov 2012 12:30:19 +0000 (13:30 +0100)]
Remove BeOS special-casing from Configure.

9 years agoRemove the BeOS port.
Nicholas Clark [Thu, 29 Nov 2012 12:17:31 +0000 (13:17 +0100)]
Remove the BeOS port.

BeOS was an operating system for personal computers developed by Be Inc,
initially for their BeBox hardware. The OS Haiku was written as an open source
replacement/continuation for BeOS, and its perl port is current and actively

The BeOS port has not been updated since 2004.

9 years agoNote the GDBM_File changes in perldelta.
Nicholas Clark [Thu, 13 Dec 2012 16:16:52 +0000 (17:16 +0100)]
Note the GDBM_File changes in perldelta.

9 years agoEliminate the fifth argument from GDBM_File::TIEHASH.
Nicholas Clark [Thu, 13 Dec 2012 16:06:26 +0000 (17:06 +0100)]
Eliminate the fifth argument from GDBM_File::TIEHASH.

This was intended to provide control of the callback used by gdbm* functions
in case of fatal errors (such as filesystem problems), but did not work (and
could never have worked). No code on CPAN even attempted to use it. The
callback is now always the previous default, croak.

This eliminates the only used of 'FATALFUNC' in the *DBM modules' type
files, so remove it from all of them.

It also eliminates a cast from a data pointer to a function pointer, which
is not legal C, and rightly upsets pedantic ANSI C compilers. The fact that
there was exactly cast, and only in one direction, gives a clue as to how
likely this was ever to work.

9 years agoGDBM_File is meant to croak() if the gdbm library has a fatal error.
Nicholas Clark [Thu, 13 Dec 2012 15:38:17 +0000 (16:38 +0100)]
GDBM_File is meant to croak() if the gdbm library has a fatal error.

gdbm_open() takes a fifth argument, for an optional callback function used
to report a fatal error. Since it was added in 5.000, the tied hash wrapper
implemented in GDBM_File.xs has (intended) to default this to croak().
However, the callback expects a function taking a single const char *
argument, whereas croak(const char *pat, ...) has variable arguments.
The code as-was had two bugs

1) The calling ABI on some platforms differs between a (known) variable-
   argument function, and one which takes (known) fixed arguments. As the
   call site knows the pointer is to a function with fixed arguments, the
   calling convention it uses doesn't match what Perl_croak_nocontext()
   expects, which can lead to crashes.
2) A message containing % characters will be interpreted as a printf format.

Both these are fixed by using a small station function as a wrapper, which
takes a single string argument, and passes to croak() a "%s" format string,
followed by the string for the error message.

Add a test for this functionality.

9 years agoB.xs: silence clang warning
David Mitchell [Thu, 13 Dec 2012 13:24:58 +0000 (13:24 +0000)]
B.xs: silence clang warning

PADOFFSET is unsigned, so checking that it's >= 0 is pointless.

9 years agochdir's argument is a directory in DosGlob.t.
Craig A. Berry [Thu, 13 Dec 2012 13:10:17 +0000 (07:10 -0600)]
chdir's argument is a directory in DosGlob.t.

It probably doesn't matter anywhere but VMS, but on VMS,
disk:[dir.blead]t (the result of catfile) is an invalid argument to
chdir, but disk:[dir.blead.t] (the result of catdir) is correct.

9 years agoSigh. Fix lex.t again
Father Chrysostomos [Thu, 13 Dec 2012 13:26:56 +0000 (05:26 -0800)]
Sigh. Fix lex.t again

PERL_UNICODE can cause things to happen in a different order

9 years ago{Dos,}Glob.xs: Skip freeing during global destruction
Father Chrysostomos [Thu, 13 Dec 2012 02:09:57 +0000 (18:09 -0800)]
{Dos,}Glob.xs: Skip freeing during global destruction

See ticket #116064.

File::Glob and ::DosGlob free data associated with a calling op when
that op is freed.

During global destruction, there is no need to do that, as it will be
freed anyway.

Also, during sv_clean_all dMY_CXT can cause us to read freed memory.

9 years agoFix occasional failures in svleak.t and DosGlob.t
Father Chrysostomos [Thu, 13 Dec 2012 01:55:06 +0000 (17:55 -0800)]
Fix occasional failures in svleak.t and DosGlob.t

If the random number of ops happens to be 0 the first time, then we
end up with a false positive, as evaluating '$x+<*>' after '<*>' will
vivify the *x glob.

9 years More exceptions
Father Chrysostomos [Tue, 11 Dec 2012 13:51:03 +0000 (05:51 -0800)] More exceptions

9 years agoperl.h: fix signedness warning with clang
David Mitchell [Wed, 12 Dec 2012 10:34:29 +0000 (10:34 +0000)]
perl.h: fix signedness warning with clang

'len' arg to my_vsnprintf() is supposed to be Size_t; cast it that way
before testing it.

9 years agoIn DosGlob.xs, add a block around MY_CXT_INIT, as it contains a declaration.
Nicholas Clark [Wed, 12 Dec 2012 09:18:21 +0000 (10:18 +0100)]
In DosGlob.xs, add a block around MY_CXT_INIT, as it contains a declaration.

The macro MY_CXT_INIT contains a variable declaration, and xsubpp doesn't
wrap XS BOOT sections within a block, hence code at the start of the BOOT
section may already be after code. Hence wrap MY_CXT_INIT within a block, to
ensure that its initialisation is before any code.

9 years agoData::Dumper is at 2.139
Steffen Mueller [Wed, 12 Dec 2012 06:35:21 +0000 (07:35 +0100)]
Data::Dumper is at 2.139

9 years agoBring Data::Dumper version and changelog up to date with CPAN release
Steffen Mueller [Wed, 12 Dec 2012 06:33:33 +0000 (07:33 +0100)]
Bring Data::Dumper version and changelog up to date with CPAN release

The 2.139 CPAN release just went out. It has the same code that is in
blead now, but it has distribution fixes on top of blead that wouldn't
make sense here. This bumps the version and imports the change log.

9 years agoperlvar.pod: Slight clarification, typo
Karl Williamson [Tue, 11 Dec 2012 23:51:59 +0000 (16:51 -0700)]
perlvar.pod: Slight clarification, typo

9 years agobetter POD for mg_get and SvGROW
Daniel Dragan [Tue, 11 Dec 2012 19:01:54 +0000 (14:01 -0500)]
better POD for mg_get and SvGROW

SvGROW unconditionally derefs SvANY to check SvLEN. A crash occurs if the
sv is SVt_NULL. Also mg_get uses SvMAGIC which also has the same problem.
Rather than having people finding these properties out by trial and error,
document them. There is no sense in adding type checks since these 2 calls
have been had sv type restrictions since probably day 1 and for
performance reason. Anyone who hit the restrictions would have either
fixed their code immediately, or abandoned using XS. I observed someone
abandoning XS in the field over these undocumented restrictions.

9 years agoReally fix t/op/lex.t
Father Chrysostomos [Wed, 12 Dec 2012 00:18:40 +0000 (16:18 -0800)]
Really fix t/op/lex.t

I *thought* I had run the tests after making commit 6d70c68615.

9 years ago[Merge] hash assignment fixes and speedup
Father Chrysostomos [Tue, 11 Dec 2012 16:59:56 +0000 (08:59 -0800)]
[Merge] hash assignment fixes and speedup

In <>
Ruslan Zakirov wrote:
> I've finished my work on pp_aassign. I find it ready for review.
> Each commit has plenty of details, but here is short description:
>     * scalar(%h = (1,1,1,1)) returns 4, not 2
>     * warn on ($s,%h) = (1,{}) as on (%h) = ({})
>     * (%h = (1)) in list context returns (1, $h{1})
>       instead of (1)
>     * return of (%h = (1,1,1)) in list context was incorrect
>     * in list context returned keys was aliased to RHS scalars
>       of aassign
>     * returned list from ((%h, @a) = ...), hash on LHS followed by
>       array or hash, was incorrect
>     * implemented right to left algorithm for not magic hash assignment
>       in scalar and void context
>     * use less mortals is list context
>     * in list context hash assignment return keys aliased to RHS
>       when it's ok (it's not LVALUE context)

9 years agopp_hot.c: Comments to clarify pp_aassign
Hugo van der Sanden [Tue, 11 Dec 2012 14:17:26 +0000 (06:17 -0800)]
pp_hot.c: Comments to clarify pp_aassign

[The committer took these from <>
and turned them into a patch.]

9 years agohashassign.t: Suppress oddball warnings
Father Chrysostomos [Tue, 11 Dec 2012 13:59:00 +0000 (05:59 -0800)]
hashassign.t: Suppress oddball warnings

9 years agohashassign.t: Test undef explicitly
Father Chrysostomos [Tue, 11 Dec 2012 13:57:41 +0000 (05:57 -0800)]
hashassign.t: Test undef explicitly

thereby eliminating uninit warnings

9 years agoCopy keys for aassign in lvalue sub
Father Chrysostomos [Thu, 25 Oct 2012 01:04:20 +0000 (18:04 -0700)]
Copy keys for aassign in lvalue sub

Checking LVRET (which pp_aassign does, as of a few commits ago)
has no effect if OPpMAYBE_LVSUB is not set on the op.  This com-
mit changes op.c:op_lvalue_flags to set this flag on aassign ops.

This makes sub:lvalue{%h=($x,$x)} behave correctly if the return
values of the sub are assigned to ($x is unmodfied).

9 years agohash argument is not used anymore in do_oddball
Ruslan Zakirov [Sat, 20 Oct 2012 10:40:13 +0000 (14:40 +0400)]
hash argument is not used anymore in do_oddball

rename arguments to make more clear what function takes

9 years agopp_hot.c:pp_aassign: mortalise variable only if we have to
Father Chrysostomos [Mon, 10 Dec 2012 13:43:41 +0000 (05:43 -0800)]
pp_hot.c:pp_aassign: mortalise variable only if we have to

This affects the hash-assignment path.

Don’t mortalise the value to protect it from a magical key making the
hv_store_ent call die, as that could unduly extend the mortals stack.

Instead, copy the key if it is magical.

Based on a patch by Ruslan Zakirov.

9 years agodon't create a copy of keys if it's not LVALUE context
Ruslan Zakirov [Wed, 17 Oct 2012 16:04:58 +0000 (20:04 +0400)]
don't create a copy of keys if it's not LVALUE context

Making another copy slows things down. We can avoid it
if aassign is not expected to return LVALUEs.

9 years agorefactor aassign
Ruslan Zakirov [Sun, 14 Oct 2012 00:41:35 +0000 (04:41 +0400)]
refactor aassign

move populating stack with return values. Place it
into main loop right after we stored values.

This allow us to delete special if blocks for
hash/array on LHS followed by other hash/array.

Also, clearing HV out of ENTER/LEAVE block is bad -
segfaults in corner cases.

Don't use goto for odd elements case.

store undef on stack for odd case. we can avoid NULL
checks in the loop and use assert like array assignment

use SvSETMAGIC rather than repeate what it means.

for array and hash assignment "while (relem <= SP)" loop
at the end was always empty. Put it into else branch.

9 years agoary/hash/firsthashelem should be set only once
Ruslan Zakirov [Sat, 13 Oct 2012 17:28:10 +0000 (21:28 +0400)]
ary/hash/firsthashelem should be set only once

Only once for first hash or array, otherwise
(%h,@a) = ... assignment returns wrong results
for duplicates and/or number of elements on RHS.

9 years agowe need duplicates counter only in list context
Ruslan Zakirov [Sat, 13 Oct 2012 17:27:12 +0000 (21:27 +0400)]
we need duplicates counter only in list context

9 years agotest return values of aassign with various elements on LHS
Ruslan Zakirov [Tue, 9 Oct 2012 22:43:40 +0000 (02:43 +0400)]
test return values of aassign with various elements on LHS

* hash on LHS followed by array, other hash or scalar,
  for example (%h, @a) = (...);

* above with normal RHS, with duplicates, odd elements
  and combination.

* inspect elements returned by aassign for lvaluedness

* assign doesn't return elements that were just cleared