| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes this problem :
$ perl -le' sub foo($) { print "foo" }; foo $_, exit'
foo
$ perl -le' sub foo(\$) { print "foo" }; foo $_, exit'
Too many arguments for main::foo at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
for all those prototypes:
*
\sigil
\[...]
;$
;*
;\sigil
;\[...]
|
|
|
|
| |
Otherwise it will be locked when trying to run it on VMS.
|
| |
|
|
|
|
|
|
|
| |
Rationalized options and usage message. The new "--who" option
now gives full names as provided in the AUTHORS file.
Updated t/porting/authors.t for the new option syntax.
|
| |
|
|
|
|
| |
than once. See also Bug 76814.
|
|
|
|
|
|
|
|
| |
[perl #76716]
commits 044d8c24f and 64345bb broke backrefs to hashes that are merely
cleared or undeffed, but not freed. Spotted by Father Chrysostomos.
Test for it here (fixes coming next)
|
| |
|
| |
|
|
|
|
| |
Both Ken and David agree with this.
|
|\
| |
| |
| |
| | |
Conflicts:
pod/perl5133delta.pod
|
| |
| |
| |
| | |
This makes this more immune to ENV differences
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This was done by moving what could to %^H. Because data structures in
%^H get stringified at runtime, new serialized entries for them had to
be created and then unserialized on each runtime call. Also, because
%^H is read-only at runtime, some data structures couldn't be moved to
it. Things were set up so that these contain only things invariant
under scoping, and looked at only when the same scoped options are in
effect as when they were created. Further comments at declaration of
%full_names_cache.
I was well into this patch when it dawned on me that it was doing
unnecessary tests, so that
if (! a) { conditionally set a }
if (! a) {}
could be implemented more efficiently as
if (! a) {
conditionally set a }
if (! a) {}
}
so I changed it, which messes up leading indentation for the diffs.
|
| |
| |
| |
| | |
The previous return value where NULL meant OK is outside-the-norm.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
This is for the benefit of smoke logs where the "not ok" aren't
shown but the diag() output is.
|
| |
| |
| |
| |
| | |
It's way too easy to forget to "local $!" in signal handlers and
changing $! when signal hits between two ops is probably never useful.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The attached patch teaches pp_leavesublv about kine.
For the record, a binary search points its digit at:
From: Nicholas Clark <nick@ccl4.org>
Date: Mon, 6 Jun 2005 09:08:45 +0000 (+0000)
Subject: Shared hash key scalars can be safely copied as shared hash key scalars
Shared hash key scalars can be safely copied as shared hash key scalars all the time.
|
| |
| |
| |
| |
| |
| |
| |
| | |
The problem here is that globs are scalars and the = operator can only
distinguish between scalar and glob assignments by the flags on the
glob. It only sees the return value of *{}, not the *{} itself. We can
fix this by having the pp_sassign look for a rv2gv (*{}) on its LHS,
to decide what type of assignment to do.
|
| |
| |
| |
| | |
add comments
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
such or use &" in toke.c, so t/porting/diag.t can find it.
|
| | |
|
| |
| |
| |
| |
| | |
The utils have a .com extension and filename case may not be
preserved.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Because we manually generate Makefiles, any executables need to be
generated from .PL files in utils/. This test checks if dual-life
executables show up in utils/.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
after the recent commit 803f274831f937654d48f8cf0468521cbf8f5dff,
the CvGV field is sometimes reference counted. Since it was intended that
the reference counting would happen only for anonymous CVs, the CVf_ANON
flag was co-opted to indicate whether RC was being used. This is not
entirely robust; for example, sub __ANON__ {} is a non-anon sub which
points to the same GV used by anon subs, which while itself doesn't
directly break things, shows that the potential for breakage is there.
So add a separate flag just to indicate the reference count status of the
CvGV field.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit adds the new construct \o{} to express a character constant
by its octal ordinal value, along with ancillary tests and
documentation.
A function to handle this is added to util.c, and it is called from the
3 parsing places it could occur. The function is a candidate for
in-lining, though I doubt that it will ever be used frequently.
|
| |
| |
| |
| | |
Signed-off-by: David Golden <dagolden@cpan.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Prior to this patch, \400 - \777 meant something different in some
circumstances in regexes outside bracketed character classes. A
deprecated warning message has been in place since 5.10.1 when this
happens. Remove the warning, and bring the behavior into line with the
other double-quotish contexts. \400 - \777 now always means the same
thing as \x{100} - \x{1FF} (except when the octal forms are taken as
backreferences.)
Signed-off-by: David Golden <dagolden@cpan.org>
|
| |
| |
| |
| |
| |
| |
| |
| | |
My vim settings were causing extra blanks in this file; remove the ones
I added recently and set the vim options to disable the offending
feature.
Signed-off-by: David Golden <dagolden@cpan.org>
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Each CV usually has a pointer, CvGV(cv), back to the GV that corresponds
to the CV's name (or to *foo::__ANON__ for anon CVs). This pointer wasn't
reference counted, to avoid loops. This could leave it dangling if the GV
is deleted.
We fix this by:
For named subs, adding backref magic to the GV, so that when the GV is
freed, it can trigger processing the CV's CvGV field. This processing
consists of: if it looks like the freeing of the GV is about to trigger
freeing of the CV too, set it to NULL; otherwise make it point to
*foo::__ANON__ (and set CvAONON(cv)).
For anon subs, make CvGV a strong reference, i.e. increment the refcnt of
*foo::__ANON__. This doesn't cause a loop, since in this case the
__ANON__ glob doesn't point to the CV. This also avoids dangling pointers
if someone does an explicit 'delete $foo::{__ANON__}'.
Note that there was already some partial protection for CvGV with
commit f1c32fec87699aee2eeb638f44135f21217d2127. This worked by
anonymising any corresponding CV when freeing a stash or stash entry.
This had two drawbacks. First it didn't fix CVs that were anonmous or that
weren't currently pointed to by the GV (e.g. after local *foo), and
second, it caused *all* CVs to get anonymised during cleanup, even the
ones that would have been deleted shortly afterwards anyway. This commit
effectively removes that former commit, while reusing a bit of the
actual anonymising code.
|