| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
Also allows extensions, when delegating to Perl_peep, to specify what function
it should use when recursing into a part of the op tree.
The usecase for this are extensions like namespace::alias, which need to hook
into the peep to do their thing. With this change they can stop copying the
whole peep only to add tiny bits of new behaviour to it, allowing them to work
easier on a large variety of perls, without having to maintain one peep which
works on all of them (which is HARD!).
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The utils have a .com extension and filename case may not be
preserved.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
(follow-up to previous commit, fix for #76540)
|
|
|
|
|
|
|
|
|
| |
gv_init() has name and len args, but newCONSTSUB() (which it calls)
doesn't have a len arg, so any trailing garbage in name gets used by
newCONSTSUB.
In the test case, this means that we end up attaching the const CV
to both the "FOO" and qq{FOO, "\\n";\n} GVs. So it gets freed twice.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When porting/makerel runs, all files copied into the directory for the
tarball have the executable bit stripped and then only a specific set of
files have the executable bit restored.
There are many files in the repo that have the executable bit set in the
repo that will be stripped. So that the state of files in the repo is
as close as possible to the state of files in the release tarball, the
executable bit has been stripped from such files.
In one recent case, a file added from a dual-life module needed the
executable bit set. Because it had the bit in the repo but was
not listed in makerel to get an executable bit, tests using it
passed in the repo and failed in the tarball.
This commit refactors the list into a new file, Porting/exec-bit.txt
and add tests to detect a mismatch between files listed there
and actual executable bits in the repo.
|
| |
|
|
|
|
|
| |
Intel's icc compiler is too clever for its own good.
Silence a false positive 'may be used undefined' warning.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes the API version of a blead release equivalent to its full version
number. For example, for 5.13.3, the API version was 5.13.0 before, and is
5.13.0 now.
This does not change anything for stable releases. The API version of 5.14.1
will still be 5.14.0.
Blead releases don't guarantee API stability. While they don't introduce API
breakage on every release, they do so often enough to want to err on the safe
side instead of making false claims in PERL_API_*.
|
|
|
|
|
| |
=for is just for one paragraph, not until the next command or anything like
that.
|
| |
|
|
|
|
| |
These files are generated, upon request, by the macro expansion targets.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Make catpath return an empty directory rather than the current
directory if the directory name is empty. This allows catpath
to play nice with non-rooted logical names, as in
catpath('sys$login:', '', 'login.com');
- Fix abs2rel bug in handling a Unix-style input.
- Assorted clarification and simplification of the documentation.
Also submitted upstream at:
<https://rt.cpan.org/Ticket/Display.html?id=59630>
|
|
|
|
|
|
| |
Still awaiting upstream integration after 15 months at:
<https://rt.cpan.org/Public/Bug/Display.html?id=43299>
|
| |
|
| |
|
|
|
|
|
| |
This assumes all VMS compilers that build perl will
support 'static inline'.
|
|
|
|
|
|
| |
Unless the file explicitly lists a gcc version I know
to work, I picked safe default values for the new
d_static_inline and perl_static_inline variables.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch enables Configure to probe for C99-style 'static inline'.
(That is, functions may be inlined, but will not be externally visible.)
The initial idea is that some common code in messy macros inside headers
might be simplified using inline functions. If the compiler does not
support 'static inline', then a plain 'static' is used instead, along
with the consequent implications of a function call (though the compiler
may optimize away the function call and inline the function anyway).
In either case, you simply use PERL_STATIC_INLINE.
This patch does not *use* this facility at all yet. It is merely a
Configure patch to make the facility availble for others to experiment
with.
VMS and Windows files will still need to be manually updated.
Finally, before actually converting anything to inline functions, please
try to carefully evaluate the performance implications of any proposed
changes. Compilers vary in what they will and will not convert to inline
functions, so it's worth proceeding slowly and carefully.
This patch results from a single new metaconfig unit, d_static_inline.U,
which I will separately upload to the metaconfig repository.
|
| |
|
|
|
|
|
|
|
|
|
| |
The SV holding XS_VERSION, and the version object created from it were
leaked. Also, if the version from perl space wasn't a version object already,
the one that got created leaked.
Additionally, in case of an error, the two SVs returned by vstringify were
leaked.
|
|
|
|
|
| |
This ensures that nothing outside our routine can unintentionally get the
address of our sentinel.
|
|
|
|
|
|
|
|
|
|
|
| |
PERL_POLLUTE was added (but undefined by default) in 5.6 to optionally
expose older 5.005 symbols for backwards compatibility. It's use was
always discouraged, and MakeMaker contains a more specific escape hatch:
perl Makefile.PL POLLUTE=1
This can be used for modules that have not been upgraded to 5.6 naming
conventions (and really should be completely obsolete by now).
|
|
|
|
|
|
|
|
| |
The oldest supported Visual C++ compiler is VC6 (released in 1998),
and we already jump through some hoops for it by inlining newer
API definitions in win32/win32.c. It is desirable to keep supporting
VC6 because it is the last MSVC release that links against MSVCRT.dll
and not against a compiler specific runtime library.
|
|
|
|
|
|
|
| |
PerlCRT.dll was a patched version of MSVCRT.dll that fixed/worked
around a few known issues with Microsoft's C runtime library.
These issues have long been fixed by updates to MSVCRT.dll, and
AFAIK nobody has used PerlCRT.dll in almost 10 years now.
|
|
|
|
|
|
|
| |
The SDK2003SP1 compiler is special because it needs to link in
an additional bufferoverflow.obj file, which does not exist for
the other 64-bit MSVC compilers. This change un-breaks the
Makefle for all these other compilers (e.g. VS2008).
|
|
|
|
|
|
|
|
| |
The option seems to have been cargo-culted, as it is not
relevant to the Perl sources, and would really be useful
for 32-bit compiles only anyways (it detects certain
potential 64-bit compatibility issues in 32-bit compiles;
the 64-bit compilers always report these issues by default).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
To get arguments into its backtraces, Carp relies on caller setting @DB::args
when called from package DB. @DB::args isn't refcounted (and can't be). Not
all overriders of &CORE::GLOBAL::caller set @DB::args properly, with the result
that @DB::arg can become "stale", with strange errors, at a distance.
However, it is possible to detect that @DB::args has not been updated, and take
evasive action. This is preferable to presenting the user (or logfile) with
silently wrong backtraces, and much preferable to the occasional "Bizarre copy"
exception.
|
|
|
|
| |
C, of course, is happy enough without a function prototype.
|
|
|
|
| |
Use a block to limit it to just the invocation of caller.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Even with all of the changes, we still die on a strchr() call now
because glibc provides "correct" strchr prototypes rather than the
C ones.
C:
char *strchr(const char *s, int c)
C++:
const char *strchr(const char *s, int c)
char *strchr( char *s, int c)
and of course C++ doesn't let you convert a 'const char *' to a
'char *' so boom on util.c:3972 in Perl_grok_bslash_o (due to 'e').
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
alarm() on Windows is implemented using a timer that is checked in
win32_async_check(), so there is no way a SIGALRM can be raised while
Perl is blocking in a system call.
|
| |
|
| |
|