| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
This patch extracts regcurly from regcomp.c and converts it
to a static inline function in a new file dquote_static.c
that is now #included by regcomp.c and toke.c. This change
will require 'make regen'.
|
|
|
|
| |
It's been unused since PERL_POLLUTE was removed in cfef31b27d1a56cd.
|
| |
|
|
|
|
|
| |
Remove one unnecessary initialisation of $ret to "", when all code paths beyond
assign to it. Remove one $ret completely (from &write_global_sym).
|
|
|
|
|
|
| |
It was added, with the only call to it commented out, in cea2e8a9dd23747f.
This means that walk_table's support for undef meaning 'no output' can
removed.
|
|
|
|
|
|
|
|
|
| |
(Strictly for all functions with variable arguments, but *no* explicit
interpreter context arguments. Most of these are *_nocontext.)
We're already emitting macros for the non-multiplicity case, and as these
functions don't need an aTHX_ adding, there's no C portability reason why
we can't generate them here too. So do so, for consistency.
|
|
|
|
|
|
| |
No need to pass in leader and have it default to do_not_edit ($filename),
as the only time the leader is needed is for the case of explicit open file
by name. Use undef instead of '/dev/null' to signal that no output is desired.
|
|
|
|
|
|
|
| |
As the internal comments state, they may be all that is available, particularly
if trying to port something to an obscure platform. There's not that much that
needs changing to get back to 5.005, or from there to 5.004, but beyond there
is hard work, and really not worth it.
|
|
|
|
| |
Remove it, simplifying the argument passing.
|
|
|
|
|
| |
Add a new flag 'O' in embed.fnc to generate a macro mapping perl_$func() to
$func(). The macro for call_atexit() is far too special to do this way.
|
|
|
|
|
| |
This code was commented out/rendered vestigial in 1998, 2000 and 2002 by
599cee73f2261c5e, d3a7d8c7d7e4d69d and 0d658bf5a06395c2.
|
|
|
|
| |
'B' is for removing breakpoints, not 'd' or 'D'. Pointed out by Jerry Huth.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ebcfa0534 changed stat.t to avoid using TEST as the stat target, since
it is read by other test scripts. But with the initial stat() in the
BEGIN block perl is still reading the script for compilation, which
will update the access time. Since the system clock usually didn't
tick another second between the first and second stats, the test
usually succeeded, but occasionally the clock would tick, and the test
would fail.
Moved the stat() out of the BEGIN block to avoid that.
As a check I temporarily added a 2 second sleep after the initial
stat to ensure we didn't have a similar problem to that will
allowed this to pass most of the time.
|
| |
|
|
|
|
| |
Previously the list was hard-coded.
|
| |
|
|
|
|
|
| |
PERL_OBJECT was removed in commit acfe0abcedaf592f. No point in keeping dead
code.
|
| |
|
|
|
|
|
| |
Previously the code was using the #ifdef generated by macro_to_ifdef(), and
immediately following that with an #else. That was ugly. And longer.
|
|
|
|
|
| |
Previously it was using hv_exists(), requiring extra code to unpack the SV and
convert it to the correct string form for the hash API.
|
| |
|
|
|
|
|
|
|
| |
This saves manually maintaining the export list, which is makework given that
the module is only used by its own tests. As the export now folds in symbols
from subpackages, this will allow refactoring/reordering/rationalisation of
the layout of testing routines in it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When MULTIPLICITY was first developed, and interpreter state moved into an
interpreter struct, thread and interpreter local PL_* variables were defined
as macros that called accessor functions, returning the address of the value,
outside of the perl core. The intent was to allow members within the
interpreter struct to change size without breaking binary compatibility, so
that bug fixes could be merged to a maintenance branch that necessitated such
a size change.
However, some non-core code defines PERL_CORE, sometimes intentionally to
bypass this mechanism for speed reasons, sometimes for other reasons but with
the inadvertent side effect of bypassing this mechanism. As some of this code
is widespread in production use, the result is that the core *can't* change
the size of members of the interpreter struct, as it will break such modules
compiled against a previous release on that maintenance branch. The upshot
is that this mechanism is redundant, and well-behaved code is penalised by
it. Hence it can and should be removed.
Accessor functions are still needed for globals when PERL_GLOBAL_STRUCT is
defined.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
An oversight: warn and die now produced wide character warnings, as
well as print.
This commit adds them to perl5135delta.pod retroactively, so they will
make their way into perl5140delta.pod.
|
| |
|
|
|
|
|
| |
\$ allows any hash/array element, even if it does not start with a
dollar sign.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With the previous commit:
$ ./perl -Ilib -MO=Deparse -e'"foo" =~ (1?/foo/:/bar/)'
'foo' =~ /foo/;
-e syntax OK
So the Deparse output no longer matches what perl does. With
this commit:
$ ./perl -Ilib -MO=Deparse -e'"foo" =~ (1?/foo/:/bar/)'
'foo' =~ ($_ =~ /foo/);
-e syntax OK
|
|
|
|
|
|
|
|
|
|
|
|
| |
$text =~ ( 1 ? /phoo/ : /bear/)
used to be constant-folded to
$text =~ /phoo/
This patch solves the problem by marking match and subst ops as
OPf_SPECIAL during constant folding, so the =~ operator can tell not
to take possession of it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
$ perl -le '$_="CCCGGG"; s!.!@a{print("[$&]"),/./}!g'
[C]
[C]
[C]
[C]
[C]
[C]
What’s happening is that the s/// does not reset PL_curpm for each
iteration, because it doesn’t usually have to.
The RHS’s scoping takes care of it most of the time. This happens with
the /e modifier and with @{...}.
In this example, though, we have a subscript, not a block. This sub-
script is in the same scope as the s/// itself.
The assumption that the substitution operator will never have to reset
PL_curpm itself appears to be incorrect. This fixes it.
|
|
|
|
|
|
| |
lib/File/stat.t compares two stat calls on t/TEST against each
other, but other tests read t/TEST, modifying its access time,
causing rare random failures in stat.t in parallel tests.
|
|
|
|
|
|
|
| |
The format of the .patch file is no longer an integer change
number, and generates an error when processed by Configure.
As .patch is now handled by make_patchnum.pl, the attached
patch removes processing of .patch from Configure.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
[DELTA]
1.07 Mon Sep 20 20:20:02 2010
- doc: about perl 5.12.x and Unicode 5.2.0
- test: prototype of normalize_partial() and cousins in proto.t.
|
| |
|
|
|
|
|
|
|
|
| |
When calling the destructors for IO objects embedded in arena GVs,
process PL_defoutgv and PL_stderrgv last. Yes, the test suite
expects STDOUT to still work at this point. Indeed, one test in ref.t
calls print from STDOUT's destructor (which is why pp_print needed a
slight tweak to handle a null GV properly).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
split do_clean_named_objs() into two functions; the first skips the IO
slot, and the second, do_clean_named_io_objs(), only processes the IO slot.
This means that the destructors for IO objects are run later than for
other named objects, so the latter will still have access to all their IO.
This is a fix for 57ef47cc7bcd1b57927d5010f363ccaa10f1d990,
which changed do_clean_named_objs() to zap the slots of a GV rather
than just decrementing the GV's ref count. This change ensures
referential integrity, but means that GVs with a reference > 1 will still
have their slots zapped. In particular, it means that PL_defoutgv no
longer gets delayed zapping. However, this has always been a problem
for any other file handles; depending on the order of GV zapping, a file
handle could be freed before a destructor gets called that might use it.
So this is a general fix.
|
|
|
|
|
| |
Reset cx in pp_sort before POPSUB, as the pointer may no
longer be valid.
|
|
|
|
|
|
|
|
| |
This test was producing spurious output to stderr when not under
git control (e.g. a release tarball):
fatal: Not a git repository (or any parent up to mount parent )
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
|
|
|
|
|
| |
This is just a version bump to make the versions in blead and CPAN
match.
|
| |
|
| |
|
|
|
|
|
|
| |
Commit 31c91b4357905486e81f901ad079da5735bdb7ba added a block of code
to free PL_psig_pend in a signal-safe way, but omitted to remove the
original unsafe freeing code above it. Removed with this commit.
|
|
|
|
| |
Well yes, it does, kinda; but it's harmless. Add a comment to that effect.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With PERL_DESTRUCT_LEVEL >= 1, PL_defstash is explicitly freed,
but doesn't actually get freed at that point due to a reference loop
between %:: and *::. Break that loop to ensure that PL_defstash gets freed
at that point. Actually, its not as serious as it sounds, as it would get
freed a bit later anyway by sv_clean_all(), but this new way has these
benefits:
* it gets freed where you expect it to be
* it gets freed cleanly, rather than by the more brutal sv_clean_all()
(which can leave dangling pointers to freed SVs)
* since its freed while *not* under the influence of
PL_in_clean_all = TRUE, it's more likely to flag up bugs related to
double-freeing etc. Indeed, the two previous commits to this are a
result of that.
|