platform/upstream/perl.git
14 years agoUse STDOUT in defout.t to suppress that ‘#foo’ under TEST/harness
Father Chrysostomos [Fri, 29 Oct 2010 16:28:57 +0000 (09:28 -0700)]
Use STDOUT in defout.t to suppress that ‘#foo’ under TEST/harness

14 years agoMerge B::PMOP::precomp and B::PMOP::reflags, using the ALIAS mechanism.
Nicholas Clark [Fri, 29 Oct 2010 16:34:00 +0000 (17:34 +0100)]
Merge B::PMOP::precomp and B::PMOP::reflags, using the ALIAS mechanism.

Like B::PMOP::pmoffset, this needs to be controlled by C pre-processor symbols,
so can't be done with an ALIAS keyword.

This saves just over .5K on this platform.

14 years agoMerge B::PMOP::pmoffset into the common B::OP accessor XS code.
Nicholas Clark [Fri, 29 Oct 2010 16:08:24 +0000 (17:08 +0100)]
Merge B::PMOP::pmoffset into the common B::OP accessor XS code.

14 years agoReorder parts of B.xs to reduce the amount of conditionally compiled code.
Nicholas Clark [Fri, 29 Oct 2010 15:42:52 +0000 (16:42 +0100)]
Reorder parts of B.xs to reduce the amount of conditionally compiled code.

Some code with #ifdef guards on PERL_VERSION can be merged.
B::COP::label can have a C<const char *> return type on all perl versions.

14 years agoMerge B::PMOP::pmflags into the common B::OP accessor XS code.
Nicholas Clark [Thu, 28 Oct 2010 16:34:01 +0000 (17:34 +0100)]
Merge B::PMOP::pmflags into the common B::OP accessor XS code.

This saves about 800 bytes on this platform.

14 years agoFor B's OP accessors, encode the type and offset in the XS alias integer.
Nicholas Clark [Thu, 28 Oct 2010 10:29:21 +0000 (11:29 +0100)]
For B's OP accessors, encode the type and offset in the XS alias integer.

This allows most of the code for simple structure lookups to be merged into
one XS routine. Start by merging U8 and PADOFFSET lookups in struct op with
the existing common OP* accessor code. This saves over 2K of object code on
this platform.

14 years agoMerge all B::OP::* accessors returning B::OP objects.
Nicholas Clark [Wed, 27 Oct 2010 15:27:27 +0000 (16:27 +0100)]
Merge all B::OP::* accessors returning B::OP objects.

Use the ALIAS value to store the member's offset within the structure, and
perform explicit pointer arithmetic to read it. This reduces the object size
by about 5K on this platform.

14 years agoMath::BigInt::FastCalc doesn't need to set $BASE or $BASE_LEN.
Nicholas Clark [Thu, 28 Oct 2010 19:17:29 +0000 (20:17 +0100)]
Math::BigInt::FastCalc doesn't need to set $BASE or $BASE_LEN.

The variables are neither documented nor exported, and nothing on CPAN uses
them. Hence there is no need to set them, which means that the return list from
Math::BigInt::Calc::_base_len() can be passed directly into FastCalc's XS
bootstrap.

14 years agoMath::BigInt::FastCalc doesn't need to override methods in a BEGIN block.
Nicholas Clark [Thu, 28 Oct 2010 18:10:17 +0000 (19:10 +0100)]
Math::BigInt::FastCalc doesn't need to override methods in a BEGIN block.

The BEGIN context of the code C<use>ing it will be early enough for the
subroutine assignments to take full effect.

14 years agoRefactor FastCalc to initialise BASE and BASE_LEN as part of bootstrap.
Nicholas Clark [Thu, 28 Oct 2010 13:57:13 +0000 (14:57 +0100)]
Refactor FastCalc to initialise BASE and BASE_LEN as part of bootstrap.

This avoids the need for a separate, special, one-shot _set_XS_BASE routine.
We take advantage of the fact that all arguments to XSLoader::load() are passed
on to the module's bootstrap routine.

14 years agoReorder the list return of Math::BigInt::Calc::_base_len().
Nicholas Clark [Thu, 28 Oct 2010 13:15:01 +0000 (14:15 +0100)]
Reorder the list return of Math::BigInt::Calc::_base_len().

A search of CPAN shows that this private function is only used internally
between Math::BigInt::Calc, Math::BigInt::FastCalc and their test suites.

14 years agoFix NAMECOUNT output format in dump.c
Father Chrysostomos [Fri, 29 Oct 2010 05:34:10 +0000 (22:34 -0700)]
Fix NAMECOUNT output format in dump.c

Remove quotation marks and, as a bonus, eliminate a compiler warning.

14 years agohv_ename_delete should not delete the HvNAME
Father Chrysostomos [Fri, 29 Oct 2010 05:22:10 +0000 (22:22 -0700)]
hv_ename_delete should not delete the HvNAME

This is something that 78b79c7758 missed.

When xhv_name is a HEK *, it is both the regular name and the effect-
ive name at the same time. Only when xhv_name_count is negative is the
regular name not also the effective name.

hv_ename_delete needs to take the HEK that xhv_name points to and
put it in a new HEK * array in xhv_name. This array will just have
one element.

When xhv_name_count is negative, effective names start with the second
element. So we set xhv_name_count to -1 so there isn’t one.

14 years agoB::GV::is_empty and B::GV::isGV_with_GP can be merged using ALIAS.
Nicholas Clark [Fri, 29 Oct 2010 11:41:10 +0000 (12:41 +0100)]
B::GV::is_empty and B::GV::isGV_with_GP can be merged using ALIAS.

This saves about 700 bytes on this platform.

14 years agoUpdate CPANPLUS to CPAN version 0.9010
Chris 'BinGOs' Williams [Fri, 29 Oct 2010 11:04:32 +0000 (12:04 +0100)]
Update CPANPLUS to CPAN version 0.9010

  [DELTA]

  CHanges for 0.9010      Thu Oct 28 23:20:19 2010
  ================================================
  * Added PERL_MM_OPT to the CPANPLUS-Dist-MM test to hopefully
    resolve RT#57241 which relates to local::lib and cpanm

  Changes for 0.9009      Mon Oct 25 21:03:39 2010
  ================================================
  * Resolve issues with the SQLite source engine

  Changes for 0.9008      Mon Oct 25 17:01:34 2010
  ================================================
  * Normalise prereqs version strings before resolving prereqs

14 years agoB::PV::PV doesn't need a special case for pad names post 5.9.x
Nicholas Clark [Fri, 29 Oct 2010 11:01:11 +0000 (12:01 +0100)]
B::PV::PV doesn't need a special case for pad names post 5.9.x

The PV-related flags on SVs used to store names in pads were made sane by
commit 931b58fb28fa5ca7.

14 years agoUse the same XS body for B::IV::RV and B::PV::RV.
Nicholas Clark [Fri, 29 Oct 2010 10:29:38 +0000 (11:29 +0100)]
Use the same XS body for B::IV::RV and B::PV::RV.

This reduces the object code size by about 600 bytes on this platform.

The input typemap checking makes no distinction between different SV types,
so the XS body will generate the same C code, despite the different XS
"types". So there is no change in behaviour from doing newXS like this,
compared with the old approach of having a (near) duplicate XS body.
We should fix the typemap checking.

14 years agoA clearer implementation of B::SV::object_2svref()
Nicholas Clark [Fri, 29 Oct 2010 09:59:23 +0000 (10:59 +0100)]
A clearer implementation of B::SV::object_2svref()

The same number of lines of code, but it avoids using 2 #defines simply to
take advantage of typemap entries, which the reader may not be familiar with.

14 years agoB::SV{REFCNT,FLAGS,SvTYPE,POK,ROK,MAGICAL} can be implemented via ALIAS.
Nicholas Clark [Fri, 29 Oct 2010 09:28:53 +0000 (10:28 +0100)]
B::SV{REFCNT,FLAGS,SvTYPE,POK,ROK,MAGICAL} can be implemented via ALIAS.

Maksing the flags directly here breaks a bit of the encapsulation of sv.h, but
saves about 4K on this platform.

14 years agoUpdate CPANPLUS-Dist-Build to CPAN version 0.50
Chris 'BinGOs' Williams [Fri, 29 Oct 2010 08:49:11 +0000 (09:49 +0100)]
Update CPANPLUS-Dist-Build to CPAN version 0.50

  [DELTA]

  0.50 Thu Oct 28 23:02:19 BST 2010
    - We clear the relevant env vars that effect Module::Build
      during the 'install' test. local::lib and cpanm set these.

14 years agoRecommend a more reliable way of identifying magic
Florian Ragwitz [Fri, 29 Oct 2010 07:03:23 +0000 (09:03 +0200)]
Recommend a more reliable way of identifying magic

Also illustrate it with some example code.

14 years agoTeach dump.c about all magic flags
Florian Ragwitz [Fri, 29 Oct 2010 06:42:03 +0000 (08:42 +0200)]
Teach dump.c about all magic flags

Also rearrange the flags according to their value and trim some trailing
whitespace in that area.

14 years agoTeach dump.c about ENAMEs
Father Chrysostomos [Fri, 29 Oct 2010 05:06:33 +0000 (22:06 -0700)]
Teach dump.c about ENAMEs

14 years agoadd SAVEFREECOPHH()
Zefram [Thu, 28 Oct 2010 21:01:11 +0000 (22:01 +0100)]
add SAVEFREECOPHH()

Add the facility for the save stack to free (decrement the refcount of)
a COPHH*.

14 years agoFile::CheckTree.t: @INC should be change for chdir
Karl Williamson [Thu, 28 Oct 2010 04:54:59 +0000 (22:54 -0600)]
File::CheckTree.t: @INC should be change for chdir

This test has a workaround for windows that isn't needed if it just sets
up the @INC initially to allow for finding things both before and after
the chdir.

And, it's unreasonable to expect that nothing it calls would in turn
never do their own module load, so the @INC needs to be correct anyway.

14 years agoIn B.xs, move the definition of PMOP_pmnext adjacent to its usage.
Nicholas Clark [Thu, 28 Oct 2010 15:36:56 +0000 (16:36 +0100)]
In B.xs, move the definition of PMOP_pmnext adjacent to its usage.

Now it lives within the #ifdef guarding the conditional compilation of the only
code that uses it.

14 years agoThe method B::PMOP::pmregexp never existed. Remove it from the documentation.
Nicholas Clark [Thu, 28 Oct 2010 15:03:49 +0000 (16:03 +0100)]
The method B::PMOP::pmregexp never existed. Remove it from the documentation.

A macro was added for it when B.xs was first written, but that macro was never
used for a method definition.

14 years agoIn S_scan_const(), use the return value of my_sprintf() to avoid a strlen().
Nicholas Clark [Thu, 28 Oct 2010 13:55:51 +0000 (14:55 +0100)]
In S_scan_const(), use the return value of my_sprintf() to avoid a strlen().

Brought to you by the campaign for the elimination of strlen().

14 years agoMerge the XS implementation of B::OP::name and B::OP::desc
Nicholas Clark [Thu, 28 Oct 2010 12:17:06 +0000 (13:17 +0100)]
Merge the XS implementation of B::OP::name and B::OP::desc

This saves 4 lines of source code, but over 1K of object code.

14 years agoperldelta up to 0b6a3b5adbe83
Father Chrysostomos [Thu, 28 Oct 2010 07:04:58 +0000 (00:04 -0700)]
perldelta up to 0b6a3b5adbe83

14 years agoIncrease Hash::Util::FieldHash’s version
Father Chrysostomos [Thu, 28 Oct 2010 06:44:06 +0000 (23:44 -0700)]
Increase Hash::Util::FieldHash’s version

14 years agoDefer to perlfunc on \G and pos()
brian d foy [Thu, 28 Oct 2010 06:49:57 +0000 (01:49 -0500)]
Defer to perlfunc on \G and pos()

14 years agoMerge branch 'briandfoy/pos' into blead
brian d foy [Thu, 28 Oct 2010 06:38:30 +0000 (01:38 -0500)]
Merge branch 'briandfoy/pos' into blead

14 years agoNote that pos() only affects the next match RT #78636
brian d foy [Thu, 28 Oct 2010 06:36:57 +0000 (01:36 -0500)]
Note that pos() only affects the next match RT #78636

14 years agoType- and think-o’s
Father Chrysostomos [Thu, 28 Oct 2010 06:33:31 +0000 (23:33 -0700)]
Type- and think-o’s

14 years agoperldelta for 2acc3314e31
Father Chrysostomos [Thu, 28 Oct 2010 06:31:08 +0000 (23:31 -0700)]
perldelta for 2acc3314e31

14 years agoperldelta up to e1be28b42dd83 plus corrections
Father Chrysostomos [Thu, 28 Oct 2010 06:12:01 +0000 (23:12 -0700)]
perldelta up to e1be28b42dd83 plus corrections

14 years agoIncrease Sys::Hostname’s version
Father Chrysostomos [Thu, 28 Oct 2010 05:56:37 +0000 (22:56 -0700)]
Increase Sys::Hostname’s version

14 years agoRevert "Bump charnames’ version"
Father Chrysostomos [Thu, 28 Oct 2010 05:55:13 +0000 (22:55 -0700)]
Revert "Bump charnames’ version"

This reverts commit fc7c69e2154d208e45cf3f5c98b74ed035d8f50c.

14 years agoRun 01SelfLoader.t also under taint mode
Father Chrysostomos [Thu, 28 Oct 2010 05:16:37 +0000 (22:16 -0700)]
Run 01SelfLoader.t also under taint mode

This is to test for [perl #72062].

14 years agoMark failing tests in t/op/stash.t as to-do
Father Chrysostomos [Thu, 28 Oct 2010 04:49:03 +0000 (21:49 -0700)]
Mark failing tests in t/op/stash.t as to-do

Commit 78b79c775, in adding test for the breakage introduced in
35759254, inadvertently triggered a bug that goes back at least to
perl 5.8.7, but which only occurs with threads.

14 years agofix pod formatting in perldelta.pod
David Golden [Wed, 27 Oct 2010 22:34:11 +0000 (18:34 -0400)]
fix pod formatting in perldelta.pod

14 years agoperldelta up to 157486ae134392
Father Chrysostomos [Wed, 27 Oct 2010 20:46:13 +0000 (13:46 -0700)]
perldelta up to 157486ae134392

14 years agoIncrease SDBM_File’s version
Father Chrysostomos [Wed, 27 Oct 2010 20:43:05 +0000 (13:43 -0700)]
Increase SDBM_File’s version

14 years agoIncrease Hash::Util’s version
Father Chrysostomos [Wed, 27 Oct 2010 20:41:02 +0000 (13:41 -0700)]
Increase Hash::Util’s version

14 years agoIncrease Fcntl’s version
Father Chrysostomos [Wed, 27 Oct 2010 20:28:38 +0000 (13:28 -0700)]
Increase Fcntl’s version

14 years agoperldelta up to 582b18310
Father Chrysostomos [Wed, 27 Oct 2010 19:59:24 +0000 (12:59 -0700)]
perldelta up to 582b18310

14 years agoBump ODBM_File’s version
Father Chrysostomos [Wed, 27 Oct 2010 19:52:56 +0000 (12:52 -0700)]
Bump ODBM_File’s version

14 years agoBump NDBM_File’s version
Father Chrysostomos [Wed, 27 Oct 2010 19:51:50 +0000 (12:51 -0700)]
Bump NDBM_File’s version

14 years agoRemove THREADSV_NAMES, part of 5005 threads that the chainsaw missed.
Nicholas Clark [Wed, 27 Oct 2010 20:25:54 +0000 (22:25 +0200)]
Remove THREADSV_NAMES, part of 5005 threads that the chainsaw missed.

Also remove the documentation of OPf_SPECIAL for OP_ENTERITER, as that was only
for 5.005 threads. Stop B::Deparse misinterpreting OPf_SPECIAL on OP_ENTERITER.

14 years agoB::Deparse should call B::threadsv_names, instead of hard coding a list.
Nicholas Clark [Wed, 27 Oct 2010 20:14:06 +0000 (22:14 +0200)]
B::Deparse should call B::threadsv_names, instead of hard coding a list.

These are only used under 5.005threads, which was removed in 5.10.

14 years agoGet B::Deparse to load on perls back to 5.8.1
Nicholas Clark [Wed, 27 Oct 2010 19:37:44 +0000 (21:37 +0200)]
Get B::Deparse to load on perls back to 5.8.1

But note - not all its tests are parsing, and some routines will fail at runtime
due to methods missing from older Bs.

14 years agoRenaming of stashes should not be visible from Perl
Father Chrysostomos [Wed, 27 Oct 2010 16:44:04 +0000 (09:44 -0700)]
Renaming of stashes should not be visible from Perl

Change 35759254 made stashes get renamed when moved around. This had
an unintended consequence: Typeglobs, ref() return values, stringifi-
cation of blessed references and __PACKAGE__ are all affected by this.

This commit makes a new distinction between stashes’ names and effect-
ive names. Stash names are now unaffected when the stashes move
around. Only the effective names are affected. (The apparent presence
of any puns in the previous sentence is purely incidental and most
likely the result of the reader’s inferential propensity.)

To this end a new HvENAME_get macro is introduced, returning the first effective name (what HvNAME_get was returning). (Only one effective
name needs to be in effect at a time.) hv_add_name and hv_delete_name
have been renamed hv_add_ename and hv_delete_ename. hv_name_set is
modified to leave the effective names in place unless the name is
being set to NULL.

These names are now stored in HvAUX as follows: When xhv_name_count is
0, xhv_name is a HEK pointer, containing the name which is also the
effective name. When xhv_name_count is not zero, then xhv_name is a
pointer to an array of HEK pointers. If xhv_name_count is positive,
the first HEK is the name *and* one of the effective names. When
xhv_name_count is negative, the first HEK is the name and subsequent
HEKs are the effective names.

14 years agoSimplify the conditionals in the XS code for B::COP::{io,warnings}
Nicholas Clark [Wed, 27 Oct 2010 16:16:27 +0000 (17:16 +0100)]
Simplify the conditionals in the XS code for B::COP::{io,warnings}

The same post-processed C code will generated as before for PERL_VERSION >= 9,
and the same sequence of perl API calls for PERL_VERSION < 9.

14 years agoUpdate UPSTREAM status for perlreftut and Tie::File in Maintainers.pl
Chris 'BinGOs' Williams [Wed, 27 Oct 2010 15:08:58 +0000 (16:08 +0100)]
Update UPSTREAM status for perlreftut and Tie::File in Maintainers.pl

  From IRC logs:

  [16:05] <yrlnry> Tie::File can be marked first-come.
  [16:06] <yrlnry> perlreftut can be marked 'blead' since there is no CPAN version.
  [16:06] <yrlnry> perlreftut has required only very rate changes, which are easily handled by sending patch files to the pumpkings.

14 years agoUsing ALIAS B::OP::{opt,spare,type} can be implemented as 1 XS function.
Nicholas Clark [Wed, 27 Oct 2010 14:21:40 +0000 (15:21 +0100)]
Using ALIAS B::OP::{opt,spare,type} can be implemented as 1 XS function.

This reduces the object code size by almost 2K on this platform.

14 years agoDon't fold constants in sprintf() if locales are used
Niko Tyni [Wed, 27 Oct 2010 07:56:24 +0000 (10:56 +0300)]
Don't fold constants in sprintf() if locales are used

Commit c427f4d2d4575fbc8a5190932fe321136c7597b3 in 5.10.1 made sprintf()
ignore LC_NUMERIC for numeric constants.

14 years agoLC_NUMERIC documentation updates + tests
Niko Tyni [Tue, 19 Oct 2010 18:55:14 +0000 (21:55 +0300)]
LC_NUMERIC documentation updates + tests

Most of the confusion around LC_NUMERIC was fixed with commits
7e4353e96785be675a69a6886d154405dbfdc124 and
2095dafae09cfface71d4202b3188926ea0ccc1c
but two errors remain:

- the early parts of perllocale.pod still say printf() uses LC_NUMERIC
  with just 'use locale' when actually a POSIX::setlocale() call is
  also needed

- format() hasn't used LC_NUMERIC unconditionally since 5.005_03
  (commit 097ee67dff1c60f201bc09435bc6eaeeafcd8123).

Update the documentation and test the claims in t/run/locale.t.

14 years agoRefactor LC_NUMERIC test out of t/run/fresh_perl.t
Niko Tyni [Wed, 27 Oct 2010 06:49:38 +0000 (09:49 +0300)]
Refactor LC_NUMERIC test out of t/run/fresh_perl.t

Neither lib/locale.t nor t/run/fresh_perl.t should be used for new tests,
so take the locale related tests and the setup code from fresh_perl.t
to make ground for more.

14 years agoUpdate Archive-Extract to CPAN version 0.46
Chris 'BinGOs' Williams [Wed, 27 Oct 2010 11:09:43 +0000 (12:09 +0100)]
Update Archive-Extract to CPAN version 0.46

  [DELTA]

  Changes for 0.46    Tue Oct 26 23:45:52 2010
  ============================================
  * Correct speeling errors in docs, spotted by
    Avar
  * Only use unzip from /usr/pkg/bin when on
    NetBSD which will be the Info-ZIP version

14 years agonew API functions op_scope and op_lvalue
Zefram [Tue, 26 Oct 2010 22:58:42 +0000 (23:58 +0100)]
new API functions op_scope and op_lvalue

The function scope() goes into the API as op_scope(), and mod() goes
into the API as op_lvalue().  Both marked experimental, because their
behaviour is a little quirky and not trivially dequirkable.

14 years agoANYOF regnode often overallocates space
Karl Williamson [Tue, 26 Oct 2010 19:14:12 +0000 (13:14 -0600)]
ANYOF regnode often overallocates space

The ANYOF regnode is used for [bracketed character classes].  It is
normally a struct regnode_charclass, but sometimes it is a struct
regnode_charclass_class, which adds an extra 4 bytes at the end to store
which of things like \d, \w, [:posix:] within the outer bracketed class
are to be matched at run time, like [\d\s[:upper:]].

However these are currently only stored the if the match is to be locale
based.  I haven't looked in the history, but the comments seem to
indicate that in the past those things were stored there all the time.

But, the space is allocated even if nothing gets stored there.  This
patch only allocates the space if there is one of these classes
occurring in a [bracketed class] and something is stored there, namely
only if the regex is being compiled under 'use locale'.

The previous code was not noting that these classes matched code points
(in the 'stored' variable), but was relying on ANYOF_LARGE getting set
which thus avoided it thinking it was a single character class that
could be optimized to an EXACT node.  Thus, this patch has to explicitly
set 'stored' to > 1, as the function already does elsewhere for similar
reasons.

14 years agoCleanup output from t/io/defout.t RT#78572
Jerry D. Hedden [Tue, 26 Oct 2010 22:58:55 +0000 (15:58 -0700)]
Cleanup output from t/io/defout.t RT#78572

t/io/defout.t pollutes the output of 'make test':

  t/io/defout....................................................$a;
  # write
  ok

  The attached patch fixes this.

14 years agoRevert "[PATCH] Cleanup output from t/io/defout.t RT#78572"
Father Chrysostomos [Tue, 26 Oct 2010 22:57:06 +0000 (15:57 -0700)]
Revert "[PATCH] Cleanup output from t/io/defout.t RT#78572"

This reverts commit 4d2eb54d4d30c9c5b093de9a57c324d5551c58fe.

14 years ago[PATCH] Cleanup output from t/io/defout.t RT#78572
Jerry D. Hedden [Tue, 26 Oct 2010 21:11:32 +0000 (22:11 +0100)]
[PATCH] Cleanup output from t/io/defout.t RT#78572

  t/io/defout.t pollutes the output of 'make test':

  t/io/defout....................................................$a;
  # write
  ok

  The attached patch fixes this.

Signed-off-by: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
14 years agofix thinko in code comment
David Mitchell [Tue, 26 Oct 2010 16:07:57 +0000 (17:07 +0100)]
fix thinko in code comment

14 years agoUpdate CPAN to CPAN version 1.94_62
Chris 'BinGOs' Williams [Tue, 26 Oct 2010 13:41:47 +0000 (14:41 +0100)]
Update CPAN to CPAN version 1.94_62

  [DELTA]

  2010-10-26  Andreas J. Koenig  <andk@cpan.org>

        * release 1.94_62

        * address RT #62064: build_requires_install_policy set to "no" did not
        work correctly (reported by Xavier Bergade)

        * address RT ##55091: don't ask the proxy credentials if proxy_user
        empty (fixed by Robert Bohne)

        * address RT #55093: no_proxy doesn't work with more then one entries
        (fixed by Robert Bohne)

14 years agodetect the failure introduced in 304474c3 and fixed in cefd5c7c
Tony Cook [Tue, 26 Oct 2010 12:09:45 +0000 (23:09 +1100)]
detect the failure introduced in 304474c3 and fixed in cefd5c7c

14 years agoIn I18N::Langinfo::langinfo(), use newSVpv(), as it will call strlen()
Nicholas Clark [Tue, 26 Oct 2010 04:50:14 +0000 (05:50 +0100)]
In I18N::Langinfo::langinfo(), use newSVpv(), as it will call strlen()

newSVpv() will return an undef if the passed pointer is NULL, which allows
langinfo() to be simplified further.

14 years ago-$zero should not modify $zero
Father Chrysostomos [Tue, 26 Oct 2010 04:29:24 +0000 (21:29 -0700)]
-$zero should not modify $zero

With change a5b92898, negation started modifying numeric arguments,
causing problems for modules like Data::Float.

14 years agoCorrectly set param->new_perl in perl_clone_using()
Jan Dubois [Tue, 26 Oct 2010 01:35:19 +0000 (18:35 -0700)]
Correctly set param->new_perl in perl_clone_using()

14 years agoCorrect spelling
Father Chrysostomos [Tue, 26 Oct 2010 00:58:45 +0000 (17:58 -0700)]
Correct spelling

I misspelt lopadotemachoselachogaleokranioleipsanodrimypotrimmatosilphiokarabomelitokatakechymenokichlepikossyphophattoperisteralektryonoptokephalliokinklopeleiolagoiosiraiobaphetraganopterygon.

14 years agoRemove the to-do mark from test 4 in threads-dirh.t
Father Chrysostomos [Tue, 26 Oct 2010 00:56:48 +0000 (17:56 -0700)]
Remove the to-do mark from test 4 in threads-dirh.t

14 years agoadd CvSTASH_set() macro and make CvSTASH() rvalue only
Zefram [Mon, 25 Oct 2010 22:34:23 +0000 (23:34 +0100)]
add CvSTASH_set() macro and make CvSTASH() rvalue only

Now that CvSTASH requires backreference bookkeeping, stop people from
directly assigning to it (by using CvSTASH() as an lvalue), and instead
force them to use CvSTASH_set().

14 years agoDocument rewinddir() limitations
Jan Dubois [Mon, 25 Oct 2010 23:43:51 +0000 (16:43 -0700)]
Document rewinddir() limitations

as well as the similar limitations of directory handles that
have been open while calling the fork() emulation on Windows.

14 years agoFix @ISA recursion during global destruction
Father Chrysostomos [Mon, 25 Oct 2010 21:48:56 +0000 (14:48 -0700)]
Fix @ISA recursion during global destruction

With -DDEBUGGING and make test (not make test_harness):

Failed 3 tests out of 1889, 99.84% okay.
mro/basic.t
mro/recursion_c3.t
mro/recursion_dfs.t

See <http://www.nntp.perl.org/group/perl.perl5.porters/2010/10/msg165311.html>.

This was broken by change 35759254, which made S_hv_delete_common call
mro_package_moved when the G_DISCARD flag was passed. It used to be
skipped, which was a mistake.

This commit simply skips mro_package_moved when $::{"main::"} is
deleted. It was buggy anyway (main::E being passed to recursive calls,
instead of E), and should only happen at global destruction. (If
$::{"main::"} is deleted at run-time, it stop Perl from being func-
tional, so no one should be doing that.)

14 years agoImplement DIR* cloning on Windows
Jan Dubois [Mon, 25 Oct 2010 22:50:27 +0000 (15:50 -0700)]
Implement DIR* cloning on Windows

There doesn't seem to be a mechanism to clone FileFind handles on
Windows.  Therefore this implementation just reads all remaining
entries into a cache buffer and closes the handle.  All further
readdir() requests will be fulfilled from the cache buffer, in both
the original and the new interpreter.

This fixes bug 75154 on Windows (all tests in t/op/threads-dirh.t pass).

This commit also changes the return value of win32_telldir() to -1
for directory handles that have been read until the end.  The previous
return value was (NULL - dirp->start), which technically is not
valid C code.

API change alert: Perl_dirp_dup() gets an additional CLONE_PARAMS
parameter in this change (like all the other Perl_*_dup() functions).

14 years ago[perl #77812] Globs in tied scalars can be reified if STORE dies
Father Chrysostomos [Mon, 25 Oct 2010 21:21:57 +0000 (14:21 -0700)]
[perl #77812] Globs in tied scalars can be reified if STORE dies

This commit just adds tests. This was fixed by 2acc3314e31a9.

14 years agoRevert "Fix for RT#1804: Anonymous glob breaks when assigned through"
Father Chrysostomos [Mon, 25 Oct 2010 21:20:57 +0000 (14:20 -0700)]
Revert "Fix for RT#1804: Anonymous glob breaks when assigned through"

This reverts commit 0fe688f528b0e1b5bef6fb30d5e45316430e8a41, except
for the tests.

It is no longer necessary, as of change 2acc3314e31a9. Another reason
for this revert is that doing so fixes bug #77812, or at least it
would if 2acc3314e31a9 had not fixed that, too.

14 years agoMake untie check the FAKE flag on globs
Father Chrysostomos [Mon, 25 Oct 2010 19:28:33 +0000 (12:28 -0700)]
Make untie check the FAKE flag on globs

This allows untie($scalar) to untie the scalar if the last assigned or
returned happened to be a typeglob.

14 years agoIn Socket::inet_ntoa(), use Perl_newSVpvf(), instead of sprintf and newSVpvn*.
Nicholas Clark [Mon, 25 Oct 2010 19:43:57 +0000 (20:43 +0100)]
In Socket::inet_ntoa(), use Perl_newSVpvf(), instead of sprintf and newSVpvn*.

14 years agofunction to parse isolated label
Zefram [Sun, 24 Oct 2010 04:44:43 +0000 (05:44 +0100)]
function to parse isolated label

New API function parse_label() parses a label, separate from statements.
If a label has not already been lexed and queued up, it does not use
yylex(), but parses the label itself at the character level, to avoid
unwanted lexing past an absent optional label.

14 years agofunction to parse unlabelled statement
Zefram [Sun, 24 Oct 2010 02:13:39 +0000 (03:13 +0100)]
function to parse unlabelled statement

New API function parse_barestmt() parses a pure statement, with no label,
and returns just the statement's core ops, not attaching a state op.

14 years agostop passing line numbers into op constructor functions
Zefram [Sat, 23 Oct 2010 14:40:58 +0000 (15:40 +0100)]
stop passing line numbers into op constructor functions

Remove the line number parameter from newWHILEOP() and newFOROP()
functions.  Instead, the line number for the impending COP is set by
parser code after constructing the ops.  (In fact the parser was doing
this anyway in most cases.)  This brings newWHILEOP() and newFOROP()
in line with the other op constructors, in that they do not concern
themselves with COPs.

14 years agorefactor and regularise label/statement grammar
Zefram [Tue, 19 Oct 2010 20:16:11 +0000 (21:16 +0100)]
refactor and regularise label/statement grammar

Refactoring of the grammar around statements.  New production <barestmt>
encompasses a statement without label.  It includes all statement types,
including declarations, with no unnecessary intermediate non-terminals.
It generates an op tree for the statement's content, with no leading
state op.  The <fullstmt> production has just one rule, consisting of
optional label followed by <barestmt>.  It puts a state op on the front
of the statement's content ops.

To support the regular statement op structure, the op sequence for for(;;)
loops no longer has a second state op between the initialisation and
the loop.  Instead, the unstack op type is slightly adapted to achieve
the stack clearing without a state op.

The newFOROP() constructor function no longer generates a state op,
that now being the job of the <fullstmt> production.  Consequently it
no longer takes a parameter stating what label is to go in the state op.
This brings it in line with the other op constructors.

14 years agoMerge Hash::Util::FieldHash::_test_uvar_{get,set,same} using ALIAS.
Nicholas Clark [Mon, 25 Oct 2010 19:21:50 +0000 (20:21 +0100)]
Merge Hash::Util::FieldHash::_test_uvar_{get,set,same} using ALIAS.

On this platform it reduces the object code size by over 1K.
Ideally these test functions would not be in the installed code, but I can't
see an easy way to avoid this.

14 years agoIn Hash::Util::FieldHash::_test_uvar_set, the second SvRV(sverf) is not needed.
Nicholas Clark [Mon, 25 Oct 2010 19:06:36 +0000 (20:06 +0100)]
In Hash::Util::FieldHash::_test_uvar_set, the second SvRV(sverf) is not needed.

14 years ago[perl #77688] tie $scalar can tie a handle
Father Chrysostomos [Mon, 25 Oct 2010 17:52:42 +0000 (10:52 -0700)]
[perl #77688] tie $scalar can tie a handle

Make tie() distinguish between $scalar and *$scalar when $scalar holds
a glob copy, by checking the FAKE flag.

14 years agoTests for [perl #77508] List assignment to fake globs fails
Father Chrysostomos [Mon, 25 Oct 2010 17:04:29 +0000 (10:04 -0700)]
Tests for [perl #77508] List assignment to fake globs fails

This was fixed by 2acc3314e31a9.

14 years ago[perl #77498] Assignment ignores magick when the RHS holds a glob
Father Chrysostomos [Mon, 25 Oct 2010 17:00:47 +0000 (10:00 -0700)]
[perl #77498] Assignment ignores magick when the RHS holds a glob

14 years agoFor PROXYSUBS, tables may sometimes have no entries.
Jan Dubois [Mon, 25 Oct 2010 17:23:04 +0000 (10:23 -0700)]
For PROXYSUBS, tables may sometimes have no entries.

The reason being that all entries in the tables are guarded
with #ifdef, so if none of the symbols are defined, then we
still end up with an empty table.  This actually happens in
the POSIX module on Windows for the "yes" table.

This reverts commit c553cca0 and changes based on it.

14 years agoIn FastCalc.xs, use SV * as the return type for _new() and _zero()
Nicholas Clark [Mon, 25 Oct 2010 13:53:19 +0000 (14:53 +0100)]
In FastCalc.xs, use SV * as the return type for _new() and _zero()

Previously these were using AV *. Whilst the code always was managing
references correctly, to work around the deficiency of the standard typemap
entry for AV * it had to mortalise the array it created, meaning that it was
creating 2 entries per call on the mortals stack, not 1.

14 years agort #72398 - get magic before downgrading in SvPVbyte()
Tony Cook [Mon, 25 Oct 2010 11:59:59 +0000 (22:59 +1100)]
rt #72398 - get magic before downgrading in SvPVbyte()

14 years agoTODO test: SvPVbyte should handle get magic before checking the utf8 flag
Niko Tyni [Mon, 25 Oct 2010 11:37:49 +0000 (22:37 +1100)]
TODO test: SvPVbyte should handle get magic before checking the utf8 flag

When $1 had the utf8 flag set from a previous match, SvPVbyte
may croak with 'Wide character in subroutine entry' before
resetting the flag to its new value.

Add a support function and a TODO test for this in XS-APItest.

http://bugs.debian.org/376329

14 years agoConvert Math::BigInt::FastCalc to XSLoader.
Nicholas Clark [Mon, 25 Oct 2010 09:09:09 +0000 (10:09 +0100)]
Convert Math::BigInt::FastCalc to XSLoader.

As the minimum perl version is 5.006, enable 'use warnings'.

14 years agoIn FastCalc.xs, inline the macros CONSTANT_OBJ and RETURN_MORTAL_BOOL.
Nicholas Clark [Mon, 25 Oct 2010 08:53:44 +0000 (09:53 +0100)]
In FastCalc.xs, inline the macros  CONSTANT_OBJ and RETURN_MORTAL_BOOL.

With the previous commit, both are now only used in one place.
No need to use sv_2mortal() on the reset of boolSV(), as both PL_sv_no and
PL_sv_yes are immortals. [And special-cased within the implementation of
sv_2mortal() - not only is it a no-op, it's a non-free no-op :-)]

14 years agoReduce repetition in FastCalc.xs by using ALIASes.
Nicholas Clark [Mon, 25 Oct 2010 08:24:06 +0000 (09:24 +0100)]
Reduce repetition in FastCalc.xs by using ALIASes.

_one, _two and _ten are aliases to _zero
_is_odd is an alias of _is_even
_is_one, _is_two, _is_ten are aliases of _is_zero

On this system this reduces the object code size by about 4.5K (about 20%).

14 years agoMove some GV tests to gv.t from glob.t - the latter is for testing glob()
Nicholas Clark [Mon, 25 Oct 2010 07:54:07 +0000 (08:54 +0100)]
Move some GV tests to gv.t from glob.t - the latter is for testing glob()

They were incorrectly added to glob.t by 010be86bae505fbe.

14 years agoStop sysio.t changing into t/op, and hence creating a temporary file there.
Nicholas Clark [Mon, 25 Oct 2010 07:51:55 +0000 (08:51 +0100)]
Stop sysio.t changing into t/op, and hence creating a temporary file there.

Creating a file there causes a race condition with (at least) glob.t, which
lists the contents of t/op by various means, and compares the results for
consistency.

14 years agoCorrect tests for B::{cstring,perlstring,cchar}
Nicholas Clark [Mon, 25 Oct 2010 07:46:53 +0000 (08:46 +0100)]
Correct tests for B::{cstring,perlstring,cchar}

Fix a Perl precedence error that prevented several test cases for cchar() from
being run. As a result, fix those test cases.

Fix an ASCII assumption in the tests common to cstring() and perlstring().
(chr 127 is " on EBCDIC, which is most definitely printable, so won't be
replaced with octal there.)