| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This solves [perl #119897] and [perl #117823], and restores the
behavior of glob() in conjunction with threads of 5.14 and older.
Since 5.16, code that used glob() inside a thread had been
unintentionally sharing state between threads, which lead to things
like this crashing and failing assertions:
./perl -Ilib -Mthreads -e 'scalar glob("*"); threads->create(sub { glob("*") })->join();'
|
|
|
|
| |
This incorporates CPAN RT #87440.
|
| |
|
|
|
|
|
|
|
|
| |
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>
|
| |
|
|
|
|
|
|
|
| |
fails under 5.14.x ( see RT #119097 )
also fails under 5.8.x
Currently test enabled on linux/bsd/solaris/darwin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
| |
The taint.t test can now be included since it no longer uses Test::Fatal.
|
| |
|
| |
|
|
|
|
|
|
| |
EXCLUDE t/00-compile.t, which has been rewritten and no longer works in
core. (Other t/00-compile.t files from the same CPAN author are already
EXCLUDED.)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 7b6e8075e45ebc684565efbe3ce7b70435f20c79.
It turns out to be problematic, because it causes NULLs on the stack,
which XSUBs may trip on.
My main reason for it was actually to try to resolve some CPAN
failures, but it turns out that other fixes have removed the
need for that.
|
|
|
|
|
|
|
| |
Now that NULL is used for a nonexistent element, it is easy for XS
code to pass it to av_push(). av_store already accepts NULL, and
av_push already works with it on non-debugging builds, so there is
really no need for this restriction.
|
|
|
|
| |
I am unaware of any successful builds since the 5.005 era.
|
|
|
|
|
| |
GNU DLD was a library that provided dynamic linking on a.out based systems.
The last release was in 1996, and it has been superseded by dlopen.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Give Perl doc sites a sane ‘latest’ version to display, directing readers
to current information, rather than showing the Perl 5.12 version in
perpetuity.
And help anybody typing man perlrepository find where the docs have moved
to.
Suggested by Father Chrysostomos in:
http://www.nntp.perl.org/group/perl.perl5.porters/2013/09/msg207079.html
|
| |
|
|
|
|
|
| |
Carp::longmess and Carp::shortmess now explicitly localise these status
variables, for the reason described in the new paragraph of documentation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
$Revision: 2.54 $ $Date: 2013/08/29 16:47:39 $
! Encode.xs
+ t/cow.t
Addressed: COW breakage with _utf8_on()
https://rt.cpan.org/Ticket/Display.html?id=88230
! Encode.pm
Reverted the document accordingly to #11
https://github.com/dankogai/p5-encode/pull/10
+ t/decode.t
Unit test for decoding behavior change in #11
https://github.com/dankogai/p5-encode/pull/12
2.53 2013/08/29 15:20:31
! Encode.pm
Merged: Do not short-circuit decode_utf8 with utf8 flags
https://github.com/dankogai/p5-encode/pull/11
Merged: document decode_utf8 behaviour more precise
https://github.com/dankogai/p5-encode/pull/10
! Makefile.PL
Added repository cpan metadata
https://github.com/dankogai/p5-encode/pull/9
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
when unwinding sub and format calls.
The comments in the added test file explain what the problem is.
The fix is to call LEAVE_SCOPE in POPSUB and POPFORMAT (to free their
lexicals) before lowering CvDEPTH.
If the context has already been popped via cxstack_ix--, then
LEAVE_SCOPE could overwrite it, so accessing cx after LEAVE_SCOPE is
unsafe. Hence the changes to POPSUB and POPFORMAT are a bit involved.
Some callers of POPSUB do a temporary cxstack_ix++ first so they
can access cx afterwards. Two cases needed to be changed to
work that way.
|
|
|
|
| |
and tests Win32 signal emulation too
|
|
|
|
|
|
|
|
|
|
| |
This fixes #112790 and part of #116907.
The length of the string is cast to I32, so it wraps and end up less
than the minimum length.
For now, simply skip this optimisation if minlen itself wraps and
becomes negative.
|
|
|
|
|
|
|
|
|
|
|
| |
Regexp is a built-in class for which no module is normally loaded, so it
can't provide its own CARP_TRACE method. Carp must therefore supply it.
The method formats a regexp reference as a qr() expression as much as
possible. Like string arg formatting, it uses \x{} escapes for literal
characters that are not ASCII printable, and it truncates according
to $Carp::MaxArgLen. The truncation happens at a different stage of
processing from its position in string arg formatting, because regexp
stringification presents an already-partly-escaped form of the regexp.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, an upgraded string argument would be wrapped in quote
characters but have all of its characters represented literally in
the stack trace, including control characters. Also, the escaping of
unprintable characters for downgraded string arguments wasn't consistent
with Perl syntax: it used \x{} escapes inside single quotes.
The new way is that string arguments (except those that look numeric)
are represented as double-quoted strings, using correct Perl syntax.
Characters outside the ASCII printable range always get \x{} escaping,
whether the string is upgraded or downgraded. ASCII printables that
require backslash escaping get it. Where an argument is truncated
due to length, the added ellipsis appears outside the double quotes,
to avoid ambiguity with a string that contains actual dots.
Implementing this is complicated by problems with applying regexps to
upgraded strings, which are particularly a problem in the constrained
environment in which Carp must run. This has previously inhibited us
from implementing correct handling of upgraded strings. The problems
were all resolved in Perl 5.13.11, so from there on we can just use the
simple regexp implementation. On older Perls upgraded strings now get
the same treatment, but implemented in a less efficient manner that does
not use regexps.
Non-string arguments, most notably references, are now are not represented
as quoted strings. The overload::StrVal() representation is safely
distinct from other argument representations. This in particular allows
distinguishing between an argument that is a reference and an argument
that is the result of stringifying a reference.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
configpm
- when debugging configpm, Config.pm is already loaded, so the alternate
Config.pm for CE isn't loaded, warn about the problem and delete the
native Config.pm to allow the cross Config.pm to be loaded
win32/Makefile.cd
- better build product cleanup, copy from the win32 makefile
- disable a bunch of module that dont/dont yet build on CE
- debugging configpm required a shortcut to make it easier to run in
isolation
- fix the defines that wind up in the cross Config.pm
- add -GS- to disable the MS Security Cookie feature on MSVC for ARM >=14
compilers, this stops a .lib linking error, security cookie overhead
isnt needed for a very space limited device
sdsdkenv.bat is the file I use to set env vars to compile for WM since
starting in SmartDevices SDK, there is no equivelent of vcvarsall.bat
for makefile building, there was a vcvarsall.bat equivelent in EVC4 tho
MSVC for non Intel CPUs sometimes isn't named cl.exe, fix config_sh.PL to
deal with it
how to compile CE Perl, some steps involving celib and MS SDKs not included
and 2 patches to CPAN modules, Socket and MakeMaker, are not in this commit
but they are required to build CE Perl
-in a Win32 x86/x64 command prompt do a "nmake all" to make a Desktop Perl
-then in a WinCE build env command prompt do a "nmake -f makefile.ce all"
-/xlib will have all your XS DLLs and PM files, /win32/$(MACHINE) will
have perl519.dll and perl.exe
Tony Cook: update MANIFEST
|
|
|
|
|
|
| |
[rt.cpan.org #79649] If an old Carp, requiring old-style Carp::Heavy
that provides subroutines, gets a newer stub-style Carp::Heavy, due to
@INC having changed, the resulting error messages were not awesome.
|
|
|
|
| |
Signed-off-by: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
|
|
|
|
|
| |
Only affects operation on old Perl versions. Some special-case hackery
required for compatibility with old warnings.pm that eagerly loads Carp.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
3.21 - 2013-08-17
* Fix cpan #87870: Merge core perl commit 90b0dc0e2e
(Thanks to Father Chrysostomos for the original patch and
to Steve Hay for forwarding it)
* Fix cpan #86975: Deterministically order API elements in POD
(Thanks to Karl Williamson for providing a patch.)
* Fix cpan #81796: my $_ is deprecated
(Thanks to Nicholas Clark for providing a patch)
* Fix cpan #81484: fix isASCII and isCNTRL for inputs > 255
(Thanks to Karl Williamson for providing a patch)
* Fix cpan #80314: make use of PERL_NO_GET_CONTEXT the default
* Fix cpan #79814: Install to 'site' for perl 5.11+
(Thanks to Robert Sedlacek for providing a patch)
* Fix cpan #78271: Need SvPV_nomg_nolen
* Adapt buildperl.pl for newer Perl releases
* Update masked_versions regex for 5.005 thread builds
* Some tweaks needed to support 5.003 on 64-bit platforms
|
|
|
|
|
| |
This needs to return to the perl repository because the upcoming change to Cwd
needs to patch to include extra logic not in the auto-generated Makefile.PL
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Both t/001-basic.t and what was t/004-nolinenumbers.t were trying to write to
a 't/XSTest.c' file. When run in parallel, this was causing problems when
TEST_JOBS >= 1 (2 on some boxes, 4 on dromedary).
Since all that t/004-nolinenumbers.t was ever trying to do was to run
process_file() without line numbers -- a case not exercised prior to my
2009-11 refactoring/test additions -- the simplest way to avoid these
problems is to stuff the tests from t/004 into t/001 and delete t/001.
For: RT #119231
|
|
|
|
|
|
|
|
|
|
| |
This resolves the last remaining issue in ticket #78194, that
newRV is supposedly buggy because it doesn’t copy its referent.
The full implications of the PADTMP are not explained anywhere in
the API docs, and even XSUBs shouldn’t have to worry about special
handling. (E.g., what if they do SvREFCNT_dec(SvRV(sv)); SvRV(sv)=...?)
So the real solution here is not to let XSUBs see them.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit c82ecf346.
It turn out to be faulty, because a location shared betweens threads
(the cop) was holding a reference count on a pad entry in a particu-
lar thread. So when you free the cop, how do you know where to do
SvREFCNT_dec?
In reverting c82ecf346, this commit still preserves the bug fix from
1311cfc0a7b, but shifts it around.
|
|
|
|
|
|
|
|
|
| |
It also allows objects to specify how they appear in the stack dump with
a CARP_TRACE method, and also allows the user to specify their own
formatter for objects without CARP_TRACE as well as other references.
[perl #92446]
Minor fix, commit message reformatting and manifest update by Tony Cook.
|
| |
|
|
|
|
| |
It is far too easy to overlook it when adding new savestack types.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This saves having to allocate a separate string buffer for every cop
(control op; every statement has one).
Under non-threaded builds, every cop has a pointer to the GV for that
source file, namely *{"_<filename"}.
Under threaded builds, the name of the GV used to be stored instead.
Now we store an offset into the per-interpreter PL_filegvpad, which
points to the GV.
This makes no significant speed difference, but it reduces mem-
ory usage.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
1.29 -- Thu Aug 01 13:40 UTC 2013
* Bugfix to pairmap/pairgrep when stack moves beneath them during operation
1.28 -- Thu Aug 01 12:19 UTC 2013
-- BROKEN; do not use. See 1.29
* Added pairgrep, pairmap, pairs (inspired by List::Pairwise)
* Added pairkeys and pairvalues
|
| |
|