Father Chrysostomos [Fri, 20 Sep 2013 06:28:18 +0000 (23:28 -0700)]
perldelta for the prev. commit
Father Chrysostomos [Fri, 20 Sep 2013 05:33:54 +0000 (22:33 -0700)]
Don’t free initial src from @INC sub too early
As noted in <
20130919225357.GA18474@mars.tony.develop-help.com>, com-
mit 839a0e5 introduces uninitialized warnings (and sometimes other
warnings) in inccode.t.
What actually is happening is that \PVBM is no longer being inlined
and returning the same reference each time, but is returning a new
mortal reference. Commit 839a0e5 uncovers an existing bug.
A sub in @INC can return a reference to a scalar containing initial
source code. That returned value would be freed prematurely if it was
not referenced elsewhere.
We have to increment its reference count before leaving the scope, and
then mortalise it afterwards.
Steve Hay [Fri, 20 Sep 2013 00:29:56 +0000 (01:29 +0100)]
perldelta - A couple of corrections and tweaks
Steve Hay [Thu, 19 Sep 2013 23:24:30 +0000 (00:24 +0100)]
corelist.pl - Update RMG to reflect recent changes
Steve Hay [Thu, 19 Sep 2013 23:16:26 +0000 (00:16 +0100)]
corelist.pl - Prefer more recent versions where many have the same delta
When adding a new section to %delta in CoreList.pm and Utils.pm if we find
several previous versions which we can take the delta from then prefer the
most recent version. This has the effect that when adding the 5.019004
section to Utils.pm we now choose 5.019003 rather than a random one of
5.019000 (or 5.019), 5.019001, 5.019002 or 5.019003.
Steve Hay [Thu, 19 Sep 2013 22:45:18 +0000 (23:45 +0100)]
corelist.pl - Put the new utilities delta section in place
This includes removing any existing stub section for this $perl_vnum first.
Steve Hay [Thu, 19 Sep 2013 22:43:24 +0000 (23:43 +0100)]
corelist.pl - Fix make_coreutils_delta()
Steve Hay [Thu, 19 Sep 2013 22:42:29 +0000 (23:42 +0100)]
corelist.pl - Various tidy-ups
Steve Hay [Thu, 19 Sep 2013 22:39:38 +0000 (23:39 +0100)]
corelist.pl - Apply BinGOs's commit "Two" at updating Utils.pm
This is commit
402e920b67.
Steve Hay [Thu, 19 Sep 2013 22:37:31 +0000 (23:37 +0100)]
corelist.pl - Apply BinGOs's "First stab" at updating Utils.pm
This is commit
bdb83d4b01.
Steve Hay [Thu, 19 Sep 2013 22:29:25 +0000 (23:29 +0100)]
corelist.pl - Correct the indentation of %delta's 'removed' entries
The indentation was only 11 characters instead of 12 to match the 'changed'
entries.
Steve Hay [Thu, 19 Sep 2013 22:25:59 +0000 (23:25 +0100)]
corelist.pl - Improve the updating of %delta and %deprecated
Both of these hashes needed to have the existing stub sections for the new
$perl_vnum manually removed prior to running corelist.pl otherwise a second
section for $perl_vnum got added. The script now deletes any such existing
section itself before adding the new (real) one.
Steve Hay [Thu, 19 Sep 2013 22:22:40 +0000 (23:22 +0100)]
corelist.pl - Fix the updating of %released
The code to not update %released if $perl_vnum is already in it didn't work
correctly. Fix this.
Craig A. Berry [Thu, 19 Sep 2013 21:30:04 +0000 (16:30 -0500)]
Teach configure.com about Perl_drand48 and friends.
Follow-up to
890c2948b6847.
Craig A. Berry [Thu, 19 Sep 2013 21:17:00 +0000 (16:17 -0500)]
Add newline to new switchd test for VMS.
On VMS, you're going to get a newline at EOF willy nilly, which
was making the expected output fail to match the actual output.
The simplest solution is just to put an explicit newline on the
print statement, which yields the same result everywhere.
Follow-up to
261cbad16f5ed8.
Steve Hay [Thu, 19 Sep 2013 15:47:45 +0000 (16:47 +0100)]
Upgrade CPAN::Meta from version 2.132510 to 2.132620
Steve Hay [Thu, 19 Sep 2013 15:27:46 +0000 (16:27 +0100)]
perldelta - 'nonexistent' should be 'non-existent'
Steve Hay [Thu, 19 Sep 2013 15:16:27 +0000 (16:16 +0100)]
perldelta - Remove all but one XXX notices
Steve Hay [Thu, 19 Sep 2013 15:10:36 +0000 (16:10 +0100)]
perldelta - Fill in currently remaining TODO items
9d32676e doesn't need one since it only fixes things that were added post
5.19.3, but [perl #117265] is worth mentioning somewhere so I've added that
to the warnings entry.
Steve Hay [Thu, 19 Sep 2013 14:32:17 +0000 (15:32 +0100)]
perldelta - Update entry for
b29f65fce6
Steve Hay [Thu, 19 Sep 2013 14:25:44 +0000 (15:25 +0100)]
Steve Hay [Thu, 19 Sep 2013 14:20:00 +0000 (15:20 +0100)]
perldelta - More copy-editing
Steve Hay [Thu, 19 Sep 2013 14:04:58 +0000 (15:04 +0100)]
perldelta - Un-TODO
9c7618be
As noted by Karl Williamson, it's very unlikely that any user would have
encountered the bug which this fixed, so it's not worth mentioning in
perldelta.
Steve Hay [Thu, 19 Sep 2013 13:27:10 +0000 (14:27 +0100)]
Add a USING_MSVC6 macro to identify Microsoft Visual C++ 6.0
This simplifies some of the logic necessary for coping with its various
problems.
Suggested by Nicholas Clark.
Nicholas Clark [Thu, 19 Sep 2013 13:13:24 +0000 (15:13 +0200)]
Remove Cwd from the "actually architecture dependant files" special cases.
This probably hasn't been needed since the file Cwd.pm was moved from lib/
into the directory containing its XS code.
Neil Bowers [Wed, 18 Sep 2013 19:47:53 +0000 (20:47 +0100)]
Added is_core(), which returns true if the module was/is in core
Default to checking against $^V, but you can optionally specify
the perl release, and can also optionally specify a minimum
version of the module.
Signed-off-by: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
Nicholas Clark [Thu, 19 Sep 2013 09:32:02 +0000 (11:32 +0200)]
Remove 4 redundant #undefs, missed by commit
79be8fb4ac8fa995.
That commit removed all the code that defined PERL_NEED_MY_HTOLE64,
PERL_NEED_MY_LETOH64, PERL_NEED_MY_HTOBE64 and PERL_NEED_MY_BETOH64, but
missed removing code in perl.h which conditionally undefined them.
Craig A. Berry [Wed, 18 Sep 2013 02:16:21 +0000 (21:16 -0500)]
Steve Hay [Wed, 18 Sep 2013 22:56:21 +0000 (23:56 +0100)]
Fix the VC6 build on Windows following commit
e25d460c74
As noted in commit
38aa66aabf, VC6 on Windows does not support the
64-bit-int build option, and likewise is broken if we don't undef HAS_QUAD
in the core.
Steve Hay [Wed, 18 Sep 2013 17:09:47 +0000 (18:09 +0100)]
Update win32/config_H.[gv]c canned configuration files
The win32/config.[gv]c files are generally kept up to date these days (and
we have tests to check that) so no changes are required in them.
The win32/config_H.[gv]c files are regenerated as per instructions in the
win32/Makefile and win32/makefile.mk, being careful to restore a couple of
things otherwise lost from the config_H.gc file. The files are now in sync
with the top-level master configuration file, config_h.SH.
Father Chrysostomos [Wed, 18 Sep 2013 16:10:31 +0000 (09:10 -0700)]
Add Toby Inkster to AUTHORS
Toby Inkster [Wed, 18 Sep 2013 12:29:47 +0000 (13:29 +0100)]
Exclude perlfaq1, perlglossary, etc from the list of pragmata - these just pod, not modules.
Steve Hay [Wed, 18 Sep 2013 13:11:21 +0000 (14:11 +0100)]
Really fix precedence problem in IO::Socket::connect() from
80d2c56d79
Thanks to Dagfinn Ilmari Mannsåker for paying more attention than me.
Steve Hay [Wed, 18 Sep 2013 12:58:27 +0000 (13:58 +0100)]
perldelta - Correction to new slice syntax
Thanks to Michael Schroeder for the spot.
Chris 'BinGOs' Williams [Wed, 18 Sep 2013 09:52:57 +0000 (10:52 +0100)]
Make changes_between() in Module::CoreList API the same as the other functions
Steve Hay [Wed, 18 Sep 2013 10:09:21 +0000 (11:09 +0100)]
Fix precedence problem in IO::Socket::connect() from
80d2c56d79
Thanks to Andreas Koenig for the spot.
Brian Fraser [Wed, 18 Sep 2013 08:42:12 +0000 (05:42 -0300)]
Merge branch 'hugmeir/disallow_cntrl' into blead
[perl #119123] disallow literal control character variables
This branch introduces a deprecation warning on variables like $^T,
where ^T is a literal control character in the source code.
It also reworks how the handling of whitespace in ${...} works,
fixing a number of bugs, such as ${\nfoo\n} not increasing the
line number.
Brian Fraser [Wed, 18 Sep 2013 08:20:43 +0000 (05:20 -0300)]
toke.c, scan_ident: No need for a while loop when using PEEKSPACE
PEEKSPACE already gobbles up all the remaining spaces until it
either finds a non-space character, or EOF.
Brian Fraser [Sun, 1 Sep 2013 23:41:26 +0000 (20:41 -0300)]
toke.c, scan_ident(): use PEEKSPACE() to skip over whitespace.
This fixes a number of bugs regarding whitespace and line numbers
in scan_ident(), such as ${\nfoo\n} not increasing the line number,
or ${\ntime\n[1]} not working.
It goes through a number of hoops to get the correct line number for
warnings emmitted from scan_ident, and reverts CopLINE to its
original value if scan_ident() is giving up and returning from the
point of the opening bracket, like in the case of ${\n\nfoo()}.
Brian Fraser [Sun, 1 Sep 2013 22:32:17 +0000 (19:32 -0300)]
toke.c, S_scan_ident(): Don't take a "end of buffer" argument, use PL_bufend
All but one of scan_ident()'s callers already passed PL_bufend as
the removed argument; The one deviant was intuit_more(), which was
setting the "end of buffer" argument, to the next close-bracket.
This commit modifies intuit_more() to temporarily set PL_bufend and
then restore it.
This was done as groundwork for the following commit, which will add
more uses of PEEKSPACE() to scan_ident() in order to fix some whitespace
and line number bugs, and PEEKSPACE() modifies PL_bufend directly
if it encounters a newline at the end of the buffer -- that last bit
being why changing intuit_more() to modify-and-restore PL_bufend is
safe, since the end of the buffer will always be a ']'
Brian Fraser [Sun, 1 Sep 2013 13:21:52 +0000 (10:21 -0300)]
[perl #119123] disallow literal control character variables
This introduces a deprecation warning on things like $^T, where ^T
is a literal control character in the source code.
Brian Fraser [Sun, 1 Sep 2013 13:51:31 +0000 (10:51 -0300)]
toke.c, S_scan_ident: Skip over newlines as well as spaces and tabs.
Not doing this lead to some bugs, such as 'eval "*{\nOIN}"'
returning a glob for "\nOIN" rather than just "OIN", or
'eval "\${\cT\n}"' giving spurious syntax errors.
Note however that this is not a full fix, since that latter
test case still fails outside of an eval.
Brian Fraser [Sun, 1 Sep 2013 12:41:20 +0000 (09:41 -0300)]
Reworked t/base/lex.t to use less hardcoded test numbers.
The later two thirds of the file now consistently use $test, which
should make future tweaks to the file simpler.
Nicholas Clark [Wed, 18 Sep 2013 08:00:45 +0000 (10:00 +0200)]
Merge the cast fixes that enable drand48 to work on 32-bit HP-UX builds.
Nicholas Clark [Tue, 17 Sep 2013 12:40:29 +0000 (14:40 +0200)]
Update the comment in util.h related to HAS_QUAD and U64TYPE.
Nicholas Clark [Tue, 17 Sep 2013 12:29:10 +0000 (14:29 +0200)]
Use U64_CONST() for the drand48 constants that are larger than 2**32.
Without this the constants are truncated to 32 bits on (at least) HP-UX
with 32 bit IVs, which results in some very wrong output from rand().
Nicholas Clark [Tue, 17 Sep 2013 12:10:28 +0000 (14:10 +0200)]
For PERL_CORE, don't undefine HAS_QUAD when building with 32 bit IVs.
When commit
de1c2614758a00c0 added support for $Config{d_quad} and HAS_QUAD
in Oct 1999, it also undefined HAS_QUAD. It's been that way ever since.
This isn't actually correct on a platform with a 64 bit type available, but
changing it now will cause too much breakage on CPAN for too little gain
(See RT #119753). However, we do need HAS_QUAD in the core for use by the
drand48 code, so make the undef conditional on PERL_CORE not being set.
Tony Cook [Wed, 18 Sep 2013 06:44:20 +0000 (16:44 +1000)]
[perl #119539] clarify that copy() doesn't create the directory
Tony Cook [Wed, 18 Sep 2013 06:33:41 +0000 (16:33 +1000)]
bump File::Copy's $VERSION
Tony Cook [Wed, 18 Sep 2013 06:29:17 +0000 (16:29 +1000)]
add Nathan Glenn to AUTHORS
Nathan Glenn [Sat, 31 Aug 2013 00:40:53 +0000 (17:40 -0700)]
Added note about directories not being created with File::Copy::copy
Father Chrysostomos [Wed, 18 Sep 2013 01:20:37 +0000 (18:20 -0700)]
perldelta for
acb340504/#119501
Father Chrysostomos [Wed, 18 Sep 2013 01:17:10 +0000 (18:17 -0700)]
Father Chrysostomos [Wed, 18 Sep 2013 01:14:46 +0000 (18:14 -0700)]
perldelta: Two to-dos that don’t deserve mention
9cefd268 [perl #118747] Allow in-place s///g when !!PL_sawampersand
c04e4151 op.c:leave_scope: use mg_free before sv_force_normal [#119295]
In both cases, it is a module relying on undocumented internals.
In the former, we do have an optimisation kicking in in cases where it
didn’t in 5.18 and earlier. But those cases are rare enough that an
entry in ‘Performance Enhancements’ would be misleading.
In the latter, the order in which clearing and ‘free’ magic are trig-
gered is more predictable, but I don’t believe that has ever been
guaranteed, and only creepy modules will be affected by it.
Tony Cook [Wed, 18 Sep 2013 01:31:02 +0000 (11:31 +1000)]
depend on the new win32 sys/errno2.h header
Steve Hay [Tue, 17 Sep 2013 22:14:05 +0000 (23:14 +0100)]
Sort the contents of %Modules in Porting/Maintainers.pl
(No changes other than the ordering of the entries.)
Steve Hay [Tue, 17 Sep 2013 22:06:21 +0000 (23:06 +0100)]
Steve Hay [Tue, 17 Sep 2013 21:59:52 +0000 (22:59 +0100)]
perldelta - Three module upgrades which haven't come from new CPAN releases
Steve Hay [Tue, 17 Sep 2013 21:59:02 +0000 (22:59 +0100)]
Use non-dev version number in IO::Socket
There was no need for
80d2c56d79 to use a dev number. The IO distribution's
modules all have differing version numbers, mostly all well ahead of the
last CPAN release (UPSTREAM is 'blead' anyway), and no others are dev
numbers.
Steve Hay [Tue, 17 Sep 2013 21:44:24 +0000 (22:44 +0100)]
Upgrade parent from version 0.227 to 0.228
Matthew Horsfall (alh) [Tue, 17 Sep 2013 12:49:35 +0000 (08:49 -0400)]
RT-119817 - Treat =back as the end of a warning description.
This keeps any trailing data in the file from showing up as part
of the last warning's description.
Steve Hay [Tue, 17 Sep 2013 17:15:00 +0000 (18:15 +0100)]
perldelta - Fill in one more item and add currently remaining possible TODOs
Father Chrysostomos [Tue, 17 Sep 2013 15:28:36 +0000 (08:28 -0700)]
perlhack: Make MAINTENANCE BRANCHES a link
Father Chrysostomos [Tue, 17 Sep 2013 15:26:12 +0000 (08:26 -0700)]
[perl #119501] \(1+2) always referencing the same sv
2484f8dbbb hid the fact that constant folding happens by making 1+2
fold to a PADTMP, an SV that is never used as an lvalue and gets cop-
ied if one tries to use it that way.
The PADTMP mechanism is what allows \"$x" to return a new value each
time, even though ops like "$x" actually reuse the same scalar repeat-
edly to return values.
Because \ copies PADTMPs, \(1+2) ends up folding 1+2 to 3 (marked
PADTMP), which is then copied by the \ at compile time. (Constant
folding works by evaluating certain ops at compile time and then
inlining their returned value.) The result is that we have a folded
\3 where 3 is *not* marked PADTMP (the reference is, instead); hence
\(1+2) gives the same scalar each time, producing a value that can be
modified, affecting future evaluations.
The solution is to skip folding \ if its argument is a PADTMP.
Father Chrysostomos [Mon, 16 Sep 2013 17:09:11 +0000 (10:09 -0700)]
Rewrap one perldiag entry for better splain output
The right margin is slightly less uneven this way (once the pod
formatting is stripped).
Steve Hay [Tue, 17 Sep 2013 15:26:22 +0000 (16:26 +0100)]
Upgrade CPAN from version 2.00 to 2.03-TRIAL
Nicholas Clark [Tue, 17 Sep 2013 11:58:04 +0000 (13:58 +0200)]
Merge fixes needed to build with 32 bit IVs and HAS_QUAD defined.
However, don't actually eliminate the #undef HAS_QUAD for 32 bit IVs, as
the costs (in CPAN breakage) look to be higher than the gains.
(See RT #119753 for more detailed analysis.)
Nicholas Clark [Wed, 11 Sep 2013 12:44:48 +0000 (13:44 +0100)]
Eliminate POPq, POPuq, TOPq, TOPuq, dPOPqv, dTOPqv, qPOPuqv, dTOPuqv.
These shortcut macros are unused in the core, and unused by any code on CPAN.
If any XS code we can't see *is* using them, it will now fail to compile, and
can easily be fixed by replacing the macros with their expansion.
Nicholas Clark [Wed, 11 Sep 2013 11:18:43 +0000 (12:18 +0100)]
The choice of 7 or 13 byte extended UTF-8 should be based on UVSIZE.
Previously it was based on HAS_QUAD, which is not (as) correct.
Nicholas Clark [Wed, 11 Sep 2013 11:12:25 +0000 (12:12 +0100)]
Use IVSIZE not HAS_QUAD to enable 'q' and 'Q' formats in pack.
Whilst the code for 'q' and 'Q' in pp_pack is itself well behaved if enabled
on a perl with 32 bit IVs (using SvNV instead of SvIV and SvUV), the
regression tests are not. Several tests use an eval of "pack 'q'" to
determine if 64 bit integer support is available (instead of
$Config{ivsize}), and t/op/pack.t fails many tests. While these could be
fixed (or skipped), unfortunately the approach of evaling "pack 'q'" is
fairly popular on CPAN, so the breakage isn't just in the perl core, and
might also be present in code we can't see or submit patches for.
Nicholas Clark [Wed, 11 Sep 2013 11:09:25 +0000 (12:09 +0100)]
Use IVSIZE not HAS_QUAD to enable "long long" formats in sv_vcatpvfn_flags().
Without this, enabling HAS_QUAD on 32 bit IV systems causes a lot of test
failures. Potentially those failures could be addressed, but it seems like
a lot more work for little gain.
H.Merijn Brand [Tue, 17 Sep 2013 08:36:38 +0000 (10:36 +0200)]
Atari FreeMiNT: MiNT does not have .exe for _exe
[perl #89502]: Add support for Atari FreeMiNT platform
Steve Hay [Tue, 17 Sep 2013 07:39:38 +0000 (08:39 +0100)]
perldelta - Correction to new Win32 entry in Platform-Specific Notes
Christian Millour [Tue, 17 Sep 2013 07:21:22 +0000 (09:21 +0200)]
perldelta for #119857
Christian Millour [Tue, 17 Sep 2013 06:17:19 +0000 (08:17 +0200)]
add reference to maintenance branches in perlpolicy
Steve Hay [Tue, 17 Sep 2013 07:35:58 +0000 (08:35 +0100)]
perldelta - Document two new test scripts
Tony Cook [Tue, 17 Sep 2013 07:03:25 +0000 (17:03 +1000)]
Tony Cook [Tue, 17 Sep 2013 06:57:37 +0000 (16:57 +1000)]
[perl #85228] stop $!=EINVAL; waitpid(0,0) from looping
Tony Cook [Tue, 17 Sep 2013 05:59:13 +0000 (15:59 +1000)]
[perl #119097] Test that print() is not returning EINTR
Victor [Mon, 12 Aug 2013 08:49:58 +0000 (12:49 +0400)]
Fixing eintr_print.t intermittent hang
1. Disable test for PERLIO=stdio
2. Remove binmode - it turns out it's useless
3. Copy OS blacklist from eintr.t ( RT #85842, RT #84688)
4. Add additional delay before child exit, just in case.
Victor [Fri, 2 Aug 2013 10:39:59 +0000 (14:39 +0400)]
Test that print() is not returning EINTR.
fails under 5.14.x ( see RT #119097 )
also fails under 5.8.x
Currently test enabled on linux/bsd/solaris/darwin
Tony Cook [Tue, 17 Sep 2013 05:45:43 +0000 (15:45 +1000)]
[perl #119857] make win32_link and win32_rename raise ENOSPC and EDQUOT when appropriate
Tony Cook [Tue, 17 Sep 2013 05:43:53 +0000 (15:43 +1000)]
add Christian Millour to AUTHORS
Christian Millour [Mon, 16 Sep 2013 23:52:26 +0000 (01:52 +0200)]
make win32_link and win32_rename raise ENOSPC and EDQUOT when appropriate
Karl Williamson [Tue, 17 Sep 2013 05:12:28 +0000 (23:12 -0600)]
perldelta for
3f40aba3 Merge branch 'ebcdic' into blead
Karl Williamson [Tue, 17 Sep 2013 04:42:09 +0000 (22:42 -0600)]
perlapi: Typos; clarify comment
Karl Williamson [Mon, 16 Sep 2013 03:16:10 +0000 (21:16 -0600)]
regexec.c: Reorder cases in switch to eliminate a goto
I imagine that the goto gets optimized out, but this is clearer anyway;
considered less harmful.
Craig A. Berry [Sat, 14 Sep 2013 23:25:58 +0000 (18:25 -0500)]
Earlier safety check for @INC entry in pp_require.
In order to make sure we find embedded NULs early enough, before
the directories in @INC have been through library calls that use C
strings, check each directory in pp_require before concatenating
a filename onto it.
François Perrad [Fri, 13 Sep 2013 07:34:58 +0000 (09:34 +0200)]
skip lib/ExtUtils/t/Embed.t when cross-compiling
The toolchain is not installed on the target when cross-compiling.
So, this test must be skipped, see patch below.
Steve Hay [Mon, 16 Sep 2013 21:43:45 +0000 (22:43 +0100)]
perldelta - A couple more corrections to recent additions
Steve Hay [Mon, 16 Sep 2013 20:59:12 +0000 (21:59 +0100)]
Note that the USE_64_BIT_INT build option is not supported with MSVC++ 6.0
Also change the Windows makefiles to disable this option if it is set with
this compiler selected. (Use !UNDEF (for nmake) and != (for dmake) to be
sure of disabling the option if it is defined on the command-line rather
than by editing the makefile.)
Steve Hay [Mon, 16 Sep 2013 19:57:31 +0000 (20:57 +0100)]
perldelta - Remove spurious New Errors entries
Spotted by Father C - These are not new errors. They are just listed with
explicit ‘exists’ and ‘delete’ now (and alphabetised under the same) rather
than %s.
Father Chrysostomos [Mon, 16 Sep 2013 02:24:29 +0000 (19:24 -0700)]
Tweak B::Concise tests following OPpCONST_FOLDED removal
Father Chrysostomos [Sun, 15 Sep 2013 22:55:19 +0000 (15:55 -0700)]
Fix minor flagging bug in op.c:fold_constants
Nothing is making use of this in at present in the affected cases.
What this code does is mark an op as being folded so that 1+2 can
be distinguished from 3. qq"foo" was erroneously being marked as
folded, unlike "foo". Constant folding is part of the way that
quote-like operators are implemented. Conceptually there is no
folding here, so we should pretend it did not happen. This was a
partial cause of bug #116086.
Father Chrysostomos [Sun, 15 Sep 2013 22:41:32 +0000 (15:41 -0700)]
Alphabetise perldiag
Father Chrysostomos [Sun, 15 Sep 2013 22:37:43 +0000 (15:37 -0700)]
Remove OPpCONST_FOLDED
Now that we have op->op_folded, we don’t need OPpCONST_FOLDED any
more. In removing it, I modified B::Concise to output op_folded the
way OPpCONST_FOLDED was output before, since it can be helpful to have
it when reading op dumps.
Father Chrysostomos [Sun, 15 Sep 2013 22:56:34 +0000 (15:56 -0700)]
Make B::OP::slabbed, folded, etc. actually work
B::OP::slabbed = 47
B::OP::savefree = 48
B::OP::static = 49
B::OP::folded = 50
Added by
3164fde474, these have never worked, because the alias index
check in B::OP::next was never updated.
Instead of hard-coding the number, use C_ARRAY_LENGTH(...).
Steve Hay [Mon, 16 Sep 2013 14:40:14 +0000 (15:40 +0100)]
Steve Hay [Mon, 16 Sep 2013 14:38:58 +0000 (15:38 +0100)]
Merge branch 'errno' into blead
Fix the handling of new Exxx constants in errno.h in VC++ 2010 onwards.
Handling these new constants was originally done in commits
b59e75b34c and
912c63ed00 but that design's redefinition of some constants can break XS
modules which link against other libraries in which the constants have not
been redefined in that way.
For example, the following program ought to print 106 in VC++ 2010 builds,
but instead prints 10053, causing some breakage in mod_perl (specifically,
APR::Status::is_ECONNABORTED() does not work):
#include <windows.h>
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
void main(void) {
printf("ECONNABORTED=%d\n", ECONNABORTED);
}
This could be worked around in mod_perl, but the same problem will also
occur in other XS extensions so it seems that a more general solution to
make perl friendlier in its dealings with errno.h constants would be better.
The solution here is to switch to the alternative design mentioned in the
first commit cited above, namely, assigning Exxx constants rather than
WSAExxx constants to $! where possible, and not redefining any Exxx
constants.
This causes some backwards-compatibility issues with a few WSAExxx error
codes having corresponding Exxx codes < 100, e.g. wherever WSAEINVAL (10022)
might previously have been assigned to $! we now assign EINVAL (22) instead,
but this breakage is unavoidable if we are to reach a sane state now.
The breakage is minimized by intercepting Perl-level assignments to $! to
convert WSAExxx codes into Exxx codes where possible, so that existing code
performing such assignments will not need to be updated. It is possible that
with some magic, tests for $! having WSAExxx values could be made to test
for Exxx values instead, but the difficulty of doing this was not deemed
worthwhile (yet, at least) for the small amount of breakage involved.
Thanks to Jan Dubois for assistance and advice on the general approach
taken in these changes.
Steve Hay [Sat, 7 Sep 2013 22:44:38 +0000 (23:44 +0100)]
Silence noise from Errno_pm.PL on Windows
A block of warnings like this appears when building Errno with VC++:
Number found where operator expected at (eval 633) line 1, near ")0xC0000093"
(Missing operator before 0xC0000093?)
This is caused by #defines like these in the Windows header files:
WinBase.h:#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW
WinNT.h:#define STATUS_FLOAT_UNDERFLOW ((DWORD )0xC0000093L)
and can be silenced by teaching Errno_pm.PL about the otherwise unexpected
whitespace immediately after "DWORD" in the cast.