This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl5.git
8 years agoperlhack: Make MAINTENANCE BRANCHES a link
Father Chrysostomos [Tue, 17 Sep 2013 15:28:36 +0000 (08:28 -0700)]
perlhack: Make MAINTENANCE BRANCHES a link

8 years ago[perl #119501] \(1+2) always referencing the same sv
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.

8 years agoRewrap one perldiag entry for better splain output
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).

8 years agoUpgrade CPAN from version 2.00 to 2.03-TRIAL
Steve Hay [Tue, 17 Sep 2013 15:26:22 +0000 (16:26 +0100)]
Upgrade CPAN from version 2.00 to 2.03-TRIAL

8 years agoMerge fixes needed to build with 32 bit IVs and HAS_QUAD defined.
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.)

8 years agoEliminate POPq, POPuq, TOPq, TOPuq, dPOPqv, dTOPqv, qPOPuqv, dTOPuqv.
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.

8 years agoThe choice of 7 or 13 byte extended UTF-8 should be based on UVSIZE.
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.

8 years agoUse IVSIZE not HAS_QUAD to enable 'q' and 'Q' formats in pack.
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.

8 years agoUse IVSIZE not HAS_QUAD to enable "long long" formats in sv_vcatpvfn_flags().
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.

8 years agoAtari FreeMiNT: MiNT does not have .exe for _exe
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

8 years agoperldelta - Correction to new Win32 entry in Platform-Specific Notes
Steve Hay [Tue, 17 Sep 2013 07:39:38 +0000 (08:39 +0100)]
perldelta - Correction to new Win32 entry in Platform-Specific Notes

8 years agoperldelta for #119857
Christian Millour [Tue, 17 Sep 2013 07:21:22 +0000 (09:21 +0200)]
perldelta for #119857

8 years agoadd reference to maintenance branches in perlpolicy
Christian Millour [Tue, 17 Sep 2013 06:17:19 +0000 (08:17 +0200)]
add reference to maintenance branches in perlpolicy

8 years agoperldelta - Document two new test scripts
Steve Hay [Tue, 17 Sep 2013 07:35:58 +0000 (08:35 +0100)]
perldelta - Document two new test scripts

8 years agoperldelta for d4c027436f
Tony Cook [Tue, 17 Sep 2013 07:03:25 +0000 (17:03 +1000)]
perldelta for d4c027436f

8 years ago[perl #85228] stop $!=EINVAL; waitpid(0,0) from looping
Tony Cook [Tue, 17 Sep 2013 06:57:37 +0000 (16:57 +1000)]
[perl #85228] stop $!=EINVAL; waitpid(0,0) from looping

8 years ago[perl #119097] Test that print() is not returning EINTR
Tony Cook [Tue, 17 Sep 2013 05:59:13 +0000 (15:59 +1000)]
[perl #119097] Test that print() is not returning EINTR

8 years agoFixing eintr_print.t intermittent hang
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.

8 years agoTest that print() is not returning EINTR.
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

8 years ago[perl #119857] make win32_link and win32_rename raise ENOSPC and EDQUOT when appropriate
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

8 years agoadd Christian Millour to AUTHORS
Tony Cook [Tue, 17 Sep 2013 05:43:53 +0000 (15:43 +1000)]
add Christian Millour to AUTHORS

8 years agomake win32_link and win32_rename raise ENOSPC and EDQUOT when appropriate
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

8 years agoperldelta for 3f40aba3 Merge branch 'ebcdic' into blead
Karl Williamson [Tue, 17 Sep 2013 05:12:28 +0000 (23:12 -0600)]
perldelta for 3f40aba3 Merge branch 'ebcdic' into blead

8 years agoperlapi: Typos; clarify comment
Karl Williamson [Tue, 17 Sep 2013 04:42:09 +0000 (22:42 -0600)]
perlapi: Typos; clarify comment

8 years agoregexec.c: Reorder cases in switch to eliminate a goto
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.

8 years agoEarlier safety check for @INC entry in pp_require.
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.

8 years agoskip lib/ExtUtils/t/Embed.t when cross-compiling
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.

8 years agoperldelta - A couple more corrections to recent additions
Steve Hay [Mon, 16 Sep 2013 21:43:45 +0000 (22:43 +0100)]
perldelta - A couple more corrections to recent additions

8 years agoNote that the USE_64_BIT_INT build option is not supported with MSVC++ 6.0
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.)

8 years agoperldelta - Remove spurious New Errors entries
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.

8 years agoTweak B::Concise tests following OPpCONST_FOLDED removal
Father Chrysostomos [Mon, 16 Sep 2013 02:24:29 +0000 (19:24 -0700)]
Tweak B::Concise tests following OPpCONST_FOLDED removal

8 years agoFix minor flagging bug in op.c:fold_constants
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.

8 years agoAlphabetise perldiag
Father Chrysostomos [Sun, 15 Sep 2013 22:41:32 +0000 (15:41 -0700)]
Alphabetise perldiag

8 years agoRemove OPpCONST_FOLDED
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.

8 years agoMake B::OP::slabbed, folded, etc. actually work
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(...).

8 years agoperldelta for ea95436966
Steve Hay [Mon, 16 Sep 2013 14:40:14 +0000 (15:40 +0100)]
perldelta for ea95436966

8 years agoMerge branch 'errno' into blead
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.

8 years agoSilence noise from Errno_pm.PL on Windows
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.

8 years agoFix the #include of winsock2.h in win32/include/sys/errno2.h
Steve Hay [Sat, 7 Sep 2013 20:53:35 +0000 (21:53 +0100)]
Fix the #include of winsock2.h in win32/include/sys/errno2.h

For some reason (I didn't figure out why) cpan/Win32/Win32.xs did not
compile as of the previous commit, but in any case we cannot just blindly
include winsock2.h because (a) it is too late if winsock.h has already
been included and (b) early WinCE doesn't have it.

The definition of _WINSOCKAPI_ was also wrongly not updated to _WINSOCK2API_
but was mistaken in its comment "Don't drag in everything" anyway: it's
actually just an old-fashioned "include guard", not a means to include a
minimal API from the file. (The mistaken comment came from the original
ext/Errno/Errno_pm.PL before this round of $!-related changes. That file
also had a redundant "#include <winsock.h>" left in it which should have
been removed along with earlier work that removed the other one, so tidy
that up too.)

Steal a hopefully more correct incantation from win32/include/sys/socket.h
instead.

Now that we allow for the possibility of winsock.h being used again, we
must take care not to make use of WSAECANCELLED if it is not defined.
(That is the only WSAExxx constant which we use that was new in winsock2.h.)

8 years agoWe need winsock2.h for WSAECANCELLED in errno2.h
Steve Hay [Sat, 7 Sep 2013 18:03:16 +0000 (19:03 +0100)]
We need winsock2.h for WSAECANCELLED in errno2.h

8 years agoClarify a comment in errno2.h
Steve Hay [Sat, 7 Sep 2013 18:02:38 +0000 (19:02 +0100)]
Clarify a comment in errno2.h

8 years agoAdd more errno.h constants to POSIX for exporting if they exist
Steve Hay [Sat, 7 Sep 2013 16:38:49 +0000 (17:38 +0100)]
Add more errno.h constants to POSIX for exporting if they exist

This change adds the following constants, which are all found in errno.h in
MS VC++ 2010 and higher (the other new constants added to that version of
errno.h are already listed in POSIX.pm):

EBADMSG
ECANCELED
EIDRM
EILSEQ
ENODATA
ENOLINK
ENOMSG
ENOSR
ENOSTR
ENOTRECOVERABLE
ENOTSUP
EOTHER
EOVERFLOW
EOWNERDEAD
EPROTO
ETIME

8 years agoFix Windows build for compilers other than VC10+
Steve Hay [Sat, 7 Sep 2013 16:28:29 +0000 (17:28 +0100)]
Fix Windows build for compilers other than VC10+

The new errno2.h only ensures that those new Exxx constants which are
required by convert_wsa_error_to_errno() have definitions; the other new
Exxx constants will remain undefined on compilers other than VC10+, so we
must take care not to use them unless we know they are defined.

8 years agoSimplify errno2.h slightly
Steve Hay [Fri, 6 Sep 2013 09:17:54 +0000 (10:17 +0100)]
Simplify errno2.h slightly

There is no need for it to worry about ensuring that standard errno.h values
like EINTR are defined.

There is no point in it defining dummy constants like EINVALIDPROCTABLE which
do not exist in errno.h at all. They would only be given the corresponding
WSAExxx values anyway, so the win32sck.c function might just as well return
them directly.

Other constants like ESOCKTNOSUPPORT which do not exist in errno.h on Windows
but presumably exist elsewhere since POSIX tries to exports them are still
worth defining (where possible -- it isn't possible for EHOSTDOWN since there
is no corresponding WSAEHOSTDOWN); add comments for these for clarity.

Also comment which errno.h constants are new in VC10, and mention three of
the four that win32/include/sys/socket.h used to redefine because they are
used in the perl core (ENOTSOCK, EAFNOSUPPORT and ECONNABORTED) -- the other
one (ECONNRESET) does not appear to be used in the perl core as far as I can
tell.

8 years agoFix stringification of $! in VC10+ builds where errno > sys_nerr
Steve Hay [Thu, 5 Sep 2013 14:18:20 +0000 (15:18 +0100)]
Fix stringification of $! in VC10+ builds where errno > sys_nerr

VC++ 2010 and above define a "POSIX supplement" of errno values ranging from
EADDRINUSE (100) to EWOULDBLOCK (140), but sys_nerr is still 43 and strerror()
returns "Unknown error" for them. We already avoid using strerror() if errno
> sys_nerr, but we treat such values as Windows error codes (i.e. <winerror.h>
values) and look up the corresponding system messages for them. There is no
better plan for these POSIX supplement errno values, but they must be
converted from <errno.h> values to <winerror.h> values first otherwise we
will look up the wrong system message. In practice, we only expect to find
errno > sys_nerr in the case of Windows sockets errors (we used to assign
WSAGetLastError() to errno), so we simply convert Exxx values to WSAExxx
values where possible, and use a default <winerror.h> value otherwise (namely,
ERROR_INVALID_FUNCTION).

This change fixes code such as this:

perl -le "$!=107; print $!"

which now outputs the expected "No connection could be made because the
target machine actively refused it." rather than "The program stopped
because an alternate diskette was not inserted." (in VC10+ builds).

Also: Fix the spelling of ECANCELED.

8 years agoIntercept assignment to $! to translate WSAExxx values to Exxx values on Windows
Steve Hay [Wed, 4 Sep 2013 17:20:03 +0000 (18:20 +0100)]
Intercept assignment to $! to translate WSAExxx values to Exxx values on Windows

Since perl previously assigned WSAExxx values to $! on Windows it is quite
possible that (Perl-level) user code may also manually make similar assignments,
which will now cause breakage if the value put in $! is subsequently compared to
Errno/POSIX constants because the latter are now the corresponding Exxx values
where possible.

An example of this is in Net::Ping::tcp_connect(), which does the following to
fetch a socket-level error code:

unpack("i", getsockopt($self->{"fh"}, SOL_SOCKET, SO_ERROR))

and assigns the result (a WSAExxx value such as 10061) to $! and then goes wrong
in the subsequent test (in ping_tcp()) for $! == ECONNREFUSED (which is now 107
rather than 10061 if perl is built with VC10 or higher).

To avoid this we now intercept assignment to $! and convert any WSAExxx values
to Exxx values first.  This causes a minor oddity in that this:

perl -le "$! = 10061; print 0+$!"

will now output 107 (for VC10+ perls) but this is surely preferable to the
alternative breakage described above.

8 years agoFix IO::Socket::connect() in the light of $! changes
Steve Hay [Tue, 3 Sep 2013 21:57:46 +0000 (22:57 +0100)]
Fix IO::Socket::connect() in the light of $! changes

We now assign Exxx values rather than WSAExxx values to $! in the event of a
sockets error if there is an Exxx value corresponding to the WSAExxx error.
This is indeed the case for several Exxx values < 100, amongst them EINVAL (22),
which corresponds to WSAEINVAL (10022), which IO::Socket::connect() has a test
for.  Note that the test used a hard-coded value for WSAExxx since there were
(and still are) no constants in Perl for that.  Users will now be able to test
for EINVAL instead, but no existing code will be using that because it has
always had the value 22.

This non-backwards-compatible breakage seems unavoidable if we are to get things
in a sane state for the future because it is really a problem with how things
have long been, namely that $! was being set to winsock2.h values, but if there
was a corresponding errno.h value and it was < 100 then *that* was used for the
Errno/POSIX constant, so authors had no good way of testing for such $! values.
The new scheme corrects that by consistently using the same values for $! and
for Errno/POSIX [except in the case of third-party code setting its own $!/errno
values, which will be addressed in the next commit].

(Ironically, Exxx values >= 100 (the ones which caused all this trouble in the
first place!) don't have this problem as long as code uses the Exxx constants
rather than the hard-coded 100XX numbers.  For example, if code tests $! ==
ECONNABORTED, where $! and ECONNABORTED were both previously set to winsock2.h
values then the same test will still work, except that now $! and ECONNABORTED
are both set to errno.h values in VC10+ (or both left as winsock2.h values upto
VC9).  It does still break if any code is directly testing $! == 10053, but
that's not such a problem: that's really broken code, which should be using the
constant instead.)

8 years agoFix a problem with mod_perl on Windows using VS2010+.
Steve Hay [Tue, 3 Sep 2013 21:57:29 +0000 (22:57 +0100)]
Fix a problem with mod_perl on Windows using VS2010+.

The problem is caused by the following two commits, which sought to deal with
new Exxx values (with values >= 100) in errno.h which Microsoft added in VS2010:

http://perl5.git.perl.org/perl.git/commit/b59e75b34cef3fedd214c9b6ee744146cf8b3308
http://perl5.git.perl.org/perl.git/commit/912c63ed00375338703043928cac3c740d00cc9d

The former commit was mostly a patch to Errno and POSIX, together with some
other cleaning up in win32/win32.h and win32/include/sys/socket.h; the latter
commit was a fixup to win32/include/sys/socket.h which restored (more
aggressively) the ENOTSOCK->WSAENOTSOCK redefinition and added similar
redefinitions for ECONNABORTED, ECONNRESET and EAFNOSUPPORT.

It is the latter commit which causes this little program to output
ECONNABORTED=10053 rather than ECONNABORTED=106 as it ought to do in VC10 (and
higher) builds of perl:

#include <windows.h>
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
void main(void) {
  printf("ECONNABORTED=%d\n", ECONNABORTED);
}

That change is now causing problems with mod_perl, in which the (Perl level)
APR::Status::is_ECONNABORTED() and the (C level) APR_STATUS_IS_ECONNABORTED()
which it calls are failing to recognize an aborted connection (indicated by
error code ECONNABORTED set by Apache httpd.exe).

The APR_STATUS_IS_ECONNABORTED() macro is picked up by mod_perl from APR's
apr_errno.h:

#define APR_STATUS_IS_ECONNABORTED(s)   ((s) == APR_ECONNABORTED \
                || (s) == APR_OS_START_SYSERR + WSAECONNABORTED)

where

#ifdef ECONNABORTED
#define APR_ECONNABORTED ECONNABORTED
#else
#define APR_ECONNABORTED   (APR_OS_START_CANONERR + 18)
#endif

When this is compiled into httpd.exe ECONNABORTED is 106 (from errno.h) and
APR_STATUS_IS_ECONNABORTED(s) amounts to

#define APR_STATUS_IS_ECONNABORTED(s) ((s) == 106 || (s) == 730053)

but when compiled into APR/Status.dll ECONNABORTED is 10053 (redefined to
WSAECONNABORTED as above) so APR_STATUS_IS_ECONNABORTED(s) then amounts to

#define APR_STATUS_IS_ECONNABORTED(s) ((s) == 10053 || (s) == 730053)

which doesn't pick up an error code of 106 coming from httpd.exe.

This could be worked around in mod_perl by redefining ECONNABORTED and the other
three back to their original errno.h values to match what httpd.exe is using,
but that might just cause problems in the other direction, with those values no
longer matching the values which perl.exe is using.

Moreoever, this problem could affect other XS interfaces (not just mod_perl), so
it really needs to be fixed in perl.

This commit implements the alternative solution mentioned the commit message for
the first commit cited above. (As noted in that previous commit message, this
solution equally has potential problems, missing out on the advantages of the
original solution implemented, namely, better backwards compatibility with other
perl code having hard-coded numeric error codes, but this will be unavoidable if
we want to get to a sane state.)

Note that changing the $! values is an incompatible change, so should probably
not be done for 5.18.x. That's unfortunate for mod_perl (and anything else
similarly affected), but that will just have to either live with the breakage
(which was introduced in 5.14.0) until 5.20.0 or else try the workaround
mentioned above for 5.14.x, 5.16.x and 5.18.x.

The main change is to use a new function throughout win32/win32sck.c to convert
WSAGetLastError() values into errno.h constants before assigning to errno. Every
possible WSAExxx value (as documented by MSDN) is mapped to an Exxx value,
although it is still possible for other WSAxxx values to get assigned to errno
unchanged (but that has always been the case, and any non-existent Exxx values
get mapped back to WSAExxx values anyway...).

We must then ensure that all of those Exxx values are defined, which is now done
(in the new file, win32/include/sys/errno2.h) in a friendlier manner, being
careful not to redefine any (specifically the new ones in VC++ 2010 and above)
which already exist. The rest are defined as the WSAExxx values, as mentioned
above.

Finally, we need the Errno module to know about these values, which is done by
having it include that same new header file to ensure that it gets the same
definitions, rather than having to play its own games. The new header is also
used in POSIX, which similarly wants definitions of as many as possible of its
hard-coded list of Exxx values.

8 years agoRegenerate Configure and chainsaw voidflags
H.Merijn Brand [Mon, 16 Sep 2013 12:47:08 +0000 (14:47 +0200)]
Regenerate Configure and chainsaw voidflags

8 years agoMerge changes which eliminate VOIDFLAGS and VOIDUSED from active code.
Nicholas Clark [Mon, 16 Sep 2013 10:00:42 +0000 (12:00 +0200)]
Merge changes which eliminate VOIDFLAGS and VOIDUSED from active code.

The remaining uses are in Configure and its related generated files, along
with canned config.sh files and configure.com. The next regeneration of
Configure from metaconfg should eliminate nearly all of these, at which point
the remainder can be removed by hand.

8 years agoEliminate the use of voidflags from Configure's pointer size determination.
Brian Fraser [Wed, 11 Sep 2013 10:22:45 +0000 (12:22 +0200)]
Eliminate the use of voidflags from Configure's pointer size determination.

This should permit metaconfig to drop the entire voidflags logic from
Configure and the config.sh related files.

8 years agoEliminate the only use of VOIDFLAGS, as part of STMT_START in perl.h
Nicholas Clark [Wed, 11 Sep 2013 09:54:42 +0000 (11:54 +0200)]
Eliminate the only use of VOIDFLAGS, as part of STMT_START in perl.h

STMT_START has used VOIDFLAGS as part of its conditional compilation since it
was added by commit 728e280303ae3d3b (March 1996). The code originally read:

   /* Now which other defined()s do we need here ??? */

Since then it has been amended to avoid entering that definition for GCC
on Solaris. Given that all current Solaris compilers are C89 conformant,
VOIDFLAGS will always be true (actually 15), so the test is redundant.
Even back in 1996, it's possible that VOIDFLAGS was always non-zero on
SunOS, rendering the test obsolete from the start.

Spotted by Brian Fraser, and extracted from a larger patch of his.

8 years agoStop using VOIDUSED in the headers.
Nicholas Clark [Wed, 11 Sep 2013 07:14:36 +0000 (09:14 +0200)]
Stop using VOIDUSED in the headers.

VOIDUSED was provided by metaconfig to work around pre-ANSI compilers that
didn't support all uses of the void type. We've been mandating a proper ANSI
C89 compiler for at least a decade, so we don't need this any more.

8 years agoRemove the hints for Kubota Pacific's Titan 3000 Series Machines.
Nicholas Clark [Mon, 16 Sep 2013 09:47:17 +0000 (11:47 +0200)]
Remove the hints for Kubota Pacific's Titan 3000 Series Machines.

These appear to be a hold-over from Perl 4 days. We think it unlikely that
perl 5.000 ever compiled correctly on these machines, and changes in 5.004
would definitely have made Perl unbuildable. Given that we've had no bug
reports in 16 years, it's clear that this platform is completely unused,
and thus safe to remove it without any warning period.

See RT #119745 for more details.

8 years agoperldelta for b92a42763
Tony Cook [Mon, 16 Sep 2013 05:41:17 +0000 (15:41 +1000)]
perldelta for b92a42763

8 years ago[perl #77680] document list of special subs in perlsub
Tony Cook [Mon, 16 Sep 2013 05:32:59 +0000 (15:32 +1000)]
[perl #77680] document list of special subs in perlsub

This also adds documentation for the undocumented DB::goto and
DB::lsub.

8 years ago[perl #77680] add pointers to a few other perl called subs
Tony Cook [Tue, 10 Sep 2013 07:04:00 +0000 (17:04 +1000)]
[perl #77680] add pointers to a few other perl called subs

8 years agobriefly document DB::lsub
Tony Cook [Mon, 16 Sep 2013 05:02:16 +0000 (15:02 +1000)]
briefly document DB::lsub

8 years agotest and briefly document DB::goto
Tony Cook [Tue, 10 Sep 2013 06:39:13 +0000 (16:39 +1000)]
test and briefly document DB::goto

8 years ago[perl #77680] perlsub pointers to sub names used by perl itself
Zsbán Ambrus [Tue, 10 Sep 2013 05:02:56 +0000 (15:02 +1000)]
[perl #77680] perlsub pointers to sub names used by perl itself

Tony Cook: convert from a diff to a commit

8 years agoperldelta for 5f39160d
Tony Cook [Mon, 16 Sep 2013 04:38:05 +0000 (14:38 +1000)]
perldelta for 5f39160d

8 years ago[perl #79074] make sure HeSVKEY_force() preserves UTF8ness (pvn)
Tony Cook [Wed, 11 Sep 2013 06:30:43 +0000 (16:30 +1000)]
[perl #79074] make sure HeSVKEY_force() preserves UTF8ness (pvn)

HeSVKEY_force() is only used in two places in core.

In the first case, the key is always stored as a SV (when handling tie
magic, since NEXTKEY can only return a SV)

The second case is in B::HE, but I don't see a way to create a B::HE object
from a hash.

8 years agoclarify that the new rand() isn't cryptographically secure
Tony Cook [Mon, 16 Sep 2013 04:13:53 +0000 (14:13 +1000)]
clarify that the new rand() isn't cryptographically secure

so people won't read too much into the change

8 years agoNote new blead customizations to JSON::PP and Test::Simple
Steve Hay [Sun, 15 Sep 2013 23:43:08 +0000 (00:43 +0100)]
Note new blead customizations to JSON::PP and Test::Simple

8 years agoperldelta - Fix syntax errors
Steve Hay [Sun, 15 Sep 2013 23:33:32 +0000 (00:33 +0100)]
perldelta - Fix syntax errors

8 years agoRemove the 'first-come' status from Porting/Maintainers.pl
Steve Hay [Sun, 15 Sep 2013 23:08:56 +0000 (00:08 +0100)]
Remove the 'first-come' status from Porting/Maintainers.pl

This has outlived its usefulness and we have agreement on p5p and irc to
drop it. Many thanks to the CPAN authors of those modules formerly listed
as 'first-come' for being sufficiently responsive to patches sent upstream!

8 years agoperldelta - Update new/changed diagnostics section
Steve Hay [Sun, 15 Sep 2013 22:39:41 +0000 (23:39 +0100)]
perldelta - Update new/changed diagnostics section

Also tweak some formatting in perldiag.pod itself.

8 years agoperldelta - Update new/changed documentation section
Steve Hay [Sun, 15 Sep 2013 22:26:44 +0000 (23:26 +0100)]
perldelta - Update new/changed documentation section

8 years agoperldelta - Fill in a TODO item for a module, which I forgot earlier
Steve Hay [Sun, 15 Sep 2013 22:03:52 +0000 (23:03 +0100)]
perldelta - Fill in a TODO item for a module, which I forgot earlier

8 years agoperldelta - New test scripts
Steve Hay [Sun, 15 Sep 2013 21:55:47 +0000 (22:55 +0100)]
perldelta - New test scripts

8 years agoperldata.pod: Mention what version introduced kv slices
Father Chrysostomos [Sun, 15 Sep 2013 22:37:06 +0000 (15:37 -0700)]
perldata.pod: Mention what version introduced kv slices

8 years agoop.h: Describe entersub and rv2cv flags
Father Chrysostomos [Sun, 15 Sep 2013 20:52:27 +0000 (13:52 -0700)]
op.h: Describe entersub and rv2cv flags

Entersub ops can turn into rv2cv ops at compile time.  It is important
that possible flag conflicts are handled properly.  Since it took me
a while to figure out that there were no bugs here, here are my own
notes, cleaned up and nicely formatted.

8 years agoUse dev version for JSON::PP
Father Chrysostomos [Sun, 15 Sep 2013 20:38:18 +0000 (13:38 -0700)]
Use dev version for JSON::PP

8 years agoFix precedence issue in JSON::PP
Father Chrysostomos [Sun, 15 Sep 2013 20:37:56 +0000 (13:37 -0700)]
Fix precedence issue in JSON::PP

8 years agoUse dev version for Test::Builder et al.
Father Chrysostomos [Sun, 15 Sep 2013 20:10:33 +0000 (13:10 -0700)]
Use dev version for Test::Builder et al.

It has changes in blead that are not on CPAN yet.  The number
0.98_05 is already used on CPAN.

8 years agoop.c: Warn on "return $a or $b" [perl #59802]
Niels Thykier [Mon, 15 Jul 2013 20:25:19 +0000 (22:25 +0200)]
op.c: Warn on "return $a or $b" [perl #59802]

Add a warning for the (likely) unintended use of "return $a or $b"
(and similar expressions), which perl parses as "(return $a) || $b"
(which is effectively just "return $a;").

Note this warning is triggered by some modules (e.g. Test::Builder).
These are not fixed by this commit.

Signed-off-by: Niels Thykier <niels@thykier.net>
8 years agoTest::Builder: Fix "return $a or $b" precedence issue
Niels Thykier [Mon, 15 Jul 2013 20:40:48 +0000 (22:40 +0200)]
Test::Builder: Fix "return $a or $b" precedence issue

perl parses "return $a or $b" effectively as "return $a;", which is
not what was intended.

Signed-off-by: Niels Thykier <niels@thykier.net>
8 years agoperldelta for e9827b374
Chris 'BinGOs' Williams [Sun, 15 Sep 2013 20:56:22 +0000 (21:56 +0100)]
perldelta for e9827b374

8 years agoRemove -lbsd from optional libs on GNU/Hurd too
Chris 'BinGOs' Williams [Sun, 15 Sep 2013 20:00:55 +0000 (21:00 +0100)]
Remove -lbsd from optional libs on GNU/Hurd too

8 years agosv.h: Make BmUSEFUL the same type on debug/non-debug builds
Father Chrysostomos [Sun, 15 Sep 2013 18:31:39 +0000 (11:31 -0700)]
sv.h: Make BmUSEFUL the same type on debug/non-debug builds

408dc2ec1c7 made in an IV (signed) on debugging builds but a UV
(unsigned) on regular builds.

8 years agoperldelta - Module upgrades
Steve Hay [Sun, 15 Sep 2013 18:04:04 +0000 (19:04 +0100)]
perldelta - Module upgrades

8 years agoperldelta - A little copy-editing
Steve Hay [Sun, 15 Sep 2013 17:44:56 +0000 (18:44 +0100)]
perldelta - A little copy-editing

8 years agoperldelta - Restore 525553cafc, accidentally undone by e7f2d65136
Steve Hay [Sun, 15 Sep 2013 16:27:30 +0000 (17:27 +0100)]
perldelta - Restore 525553cafc, accidentally undone by e7f2d65136

8 years agoExtUtils::ParseXS: bump version of related modules
David Mitchell [Sun, 15 Sep 2013 11:02:05 +0000 (12:02 +0100)]
ExtUtils::ParseXS: bump version of related modules

9b2d7314c3d60 bumped $VERSION in ParseXS.pm from 3.22 to 3.23,
but left the other .pm files at .22. This stops ExtUtils::ParseXS from
loading, so bump all the other modules in this distribution too.

8 years agoperldelta for 429a25554/#28380,#114024
Father Chrysostomos [Sun, 15 Sep 2013 06:25:04 +0000 (23:25 -0700)]
perldelta for 429a25554/#28380,#114024

8 years agoperldelta for b846c0c86e5
Father Chrysostomos [Sun, 15 Sep 2013 06:22:10 +0000 (23:22 -0700)]
perldelta for b846c0c86e5

8 years agoperldelta for e15ca23a92
Father Chrysostomos [Sun, 15 Sep 2013 06:20:51 +0000 (23:20 -0700)]
perldelta for e15ca23a92

8 years agoIncrease $ExtUtils::ParseXS::VERSION to 3.23
Father Chrysostomos [Sun, 15 Sep 2013 06:19:11 +0000 (23:19 -0700)]
Increase $ExtUtils::ParseXS::VERSION to 3.23

There has been another change (e15ca23a9) since the last CPAN
release.  Would that cmp_version.t could catch this!

8 years agoperldelta for ad39f3a27
Father Chrysostomos [Sun, 15 Sep 2013 06:15:37 +0000 (23:15 -0700)]
perldelta for ad39f3a27

8 years agoperldelta for eaaaaa32882752
Father Chrysostomos [Sun, 15 Sep 2013 06:14:51 +0000 (23:14 -0700)]
perldelta for eaaaaa32882752

8 years agoperldelta for fdc185567
Father Chrysostomos [Sun, 15 Sep 2013 06:12:54 +0000 (23:12 -0700)]
perldelta for fdc185567

8 years agoknown_pod_issues: Add Devel::CallParser
Father Chrysostomos [Sun, 15 Sep 2013 06:10:03 +0000 (23:10 -0700)]
known_pod_issues: Add Devel::CallParser

8 years agoperldelta for 6ddcf93b
Father Chrysostomos [Sun, 15 Sep 2013 06:06:52 +0000 (23:06 -0700)]
perldelta for 6ddcf93b

8 years agoperldelta: two more to-do items
Father Chrysostomos [Sun, 15 Sep 2013 06:05:13 +0000 (23:05 -0700)]
perldelta: two more to-do items

8 years agoperldelta for 8c9d3376fbf
Father Chrysostomos [Sun, 15 Sep 2013 06:02:23 +0000 (23:02 -0700)]
perldelta for 8c9d3376fbf

8 years agoperldelta for dd2a7f9048
Father Chrysostomos [Sun, 15 Sep 2013 06:00:20 +0000 (23:00 -0700)]
perldelta for dd2a7f9048

8 years agoperldelta for 7601007
Father Chrysostomos [Sun, 15 Sep 2013 05:57:48 +0000 (22:57 -0700)]
perldelta for 7601007

8 years agoperldelta for 65c68e1718
Father Chrysostomos [Sun, 15 Sep 2013 05:54:53 +0000 (22:54 -0700)]
perldelta for 65c68e1718

8 years agoperldelta for ffdb8b167e/#3643
Father Chrysostomos [Sun, 15 Sep 2013 05:53:11 +0000 (22:53 -0700)]
perldelta for ffdb8b167e/#3643

8 years agoperldelta for 25502127/#115768
Father Chrysostomos [Sun, 15 Sep 2013 05:50:48 +0000 (22:50 -0700)]
perldelta for 25502127/#115768