| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Partial fix for RT #80626
|
|
|
|
|
|
| |
‘lvalue sub return values are now COW’ is not very clear.
I know 5.12.3 is already released, but at least for posterity’s
sake it’s nice to make this more descriptive.
|
| |
|
|
|
|
| |
These are CPAN tickets, not perl tickets.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
0.011 2011-03-19 20:48:39 America/New_York
[BUG FIXES]
- Made t/000_load.t less verbose under harness (RT#65507) [Dave Mitchell]
- Removed 'Errno' as an explicit prefix (it is a core module, but not
indexed by PAUSE, which might confuse some installers
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As indicated in the comments, this flag needs to be initialized to
1 or the optimizer loses the fact that something could match a
character that isn't in utf8 and whose bitmap bit isn't set. This
happens, for example, with Unicode properties.
Thus this fixes #77414. That ticket had been closed recently because
it went away due to another patch that caused the optimizer to be
bypassed in the cases tested for. But when that patch was reverted,
and cleaned-up, this bug came back. Now, I believe I have found the
root cause.
|
|
|
|
|
|
|
|
| |
For non-locale, \d, etc are compiled in with their actual code points they
match, so the class portion of the synthetic start class node is
irrelevant, and should initialized to zero to avoid confusion. But for
locale it is highly relevant, and should be initialized to all ones, to
indicate matching anything.
|
|
|
|
|
|
|
| |
When ORing two nodes together for the synthetic start class, and one
matches outside the 256-char bitmap, we currently don't know what it
matches. In some cases it could be some or all of those 256 characters.
If so, we have to assume it's all of them.
|
|
|
|
|
| |
This is in prep for another commit which needs the flags to be
untouched for some tests.
|
|
|
|
|
| |
When my system was at 100%, the 2 seconds wasn't enough. I set it
to 10 seconds which is the most common value used in other .t's
|
|
|
|
|
| |
This macro sets all the bits of the class (for \w, etc) for use during
initialization
|
|
|
|
| |
It can't just be large enough to hold the Unicode subset.
|
|
|
|
|
|
| |
The comment said that there was no use doing this in lenp was NULL,
but there is, as it sees if there is a match or not and sets the
appropriate variable.
|
| |
|
|
|
|
|
|
|
|
|
| |
[DELTA]
Changes for 0.9103 Sun Mar 20 00:38:05 2011
================================================
* Fixed the logic not sending NA reports when
'perl' is expressed as a prereq
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This:
commit 0298d7b92741692bcf2e34c418a564332bb034e6:
Date: Tue May 31 10:40:01 2005 +0000
Avoid updating a variable in a loop.
Only calculate the number of links in a hash bucket chain if we really
need it.
p4raw-id: //depot/perl@24648
forgot to move a large comment to its new location; this new commit
fixes that.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I had about an hour of über confusion regarding smart matching in a
when, and when I finally clocked on to what the POD was telling me I
thought clarification would be in order. Many agreed :)
The chief change I would make is to use the word 'operands' instead of
'arguments' when referring to the ... and ..., ... && ... etc
sections; this was the major cause of my confusion. Second
clarification is that 'the test' in question is whether to use smart
matching, not the result of using smart matching!
Patch follows; please go ahead and amend as required :)
|
| |
|
|
|
|
|
|
|
|
|
| |
Perl_sighandler currently increments the savestack by 5
before running a signal handler, to avoid messing with a
partially completed SS push operation that's been interrupted.
This is irrelevant for safe signals, so make this action conditional on
unsafe signals only.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In Perl_sighandler, we currently increment PL_markstack_ptr and
PL_scopestack_ix.
This was added back in 1997 in the era of unsafe signals, to make them
slightly less unsafe. The idea presumably was to stop signal handlers
inadvertently corrupting the top element of each stack. However, given that
the normal method of pushing something onto those stacks is to increment
the pointer before pushing the value, I don't see how that can happen.
The downside of this is that an uninitialised or stale value can be left
in the 'hole' left on these stacks. When exiting from a signal handler via
exit(), these holes can be read and corruption occur, while stack
unwinding is taking place. The ordering of things means we can't use
SAVEDESTRUCTOR_X to undo the damage.
This commit leaves the 'PL_savestack_ix += 5', because in this case, with
unsafe signals, it *is* possible to interrupt halfway through a new set of
save data being pushed onto the stack, and it *is* possible for this to be
undone via SAVEDESTRUCTOR_X. (But it's still unsafe and half-baked.)
This fixes [perl #85206].
|
|
|
|
|
| |
For threaded platforms, this reduces the object code size, and should slightly
reduce CPU usage.
|
|
|
|
|
| |
For threaded platforms, this reduces the object code size, and should slightly
reduce CPU usage.
|
| |
|
| |
|
|
|
|
|
| |
For threaded platforms, this reduces the object code size, and should slightly
reduce CPU usage.
|
|
|
|
|
| |
For threaded platforms, this reduces the object code size, and should slightly
reduce CPU usage.
|
|
|
|
| |
For threaded platforms, this almost halves the object code size.
|
|
|
|
|
| |
For threaded platforms, this reduces the object code size, and should slightly
reduce CPU usage.
|
|
|
|
|
| |
For threaded platforms, this reduces the object code size, and should slightly
reduce CPU usage.
|
|
|
|
|
| |
For threaded platforms, this reduces the object code size, and should slightly
reduce CPU usage.
|
|
|
|
|
| |
For threaded platforms, this reduces the object code size, and should slight
reduce CPU usage.
|
|
|
|
|
| |
For threaded platforms, this reduces the object code size, and should slightly
reduce CPU usage.
|
|
|
|
|
|
| |
For threaded builds on platforms using dlopen() for dynamic loading, this
should reduce object size, and slightly reduce CPU usage when loading
extensions.
|
|
|
|
|
|
|
| |
The algorithm for mapping multi-char fold matches back to the source in
processing ANYOF nodes was defective. This caused the regex engine to
hang on certain character combinations. I've also added an assert to
stop instead of loop.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When using
utf8::upgrade
utf8::downgrade
utf8::encode
utf8::decode
or the underlying C-level functions
sv_utf8_upgrade_flags_grow
sv_utf8_downgrade
sv_utf8_encode
sv_utf8_decode
and
sv_recode_to_utf8
update the position of the pos magic, if any, and clear the utf8
length/position-mapping cache.
This fixes [perl #80190].
|
|
|
|
|
|
|
|
|
| |
Redefine all winsock based Exxxx error constants used in the
core: For VS2010 we don't want to use the errno.h values, and
for older compiler versions we don't have a definition anyways.
Also remove the warnings about VS2010 from README.win32, as
they should all be resolved now.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Perl traditionally stores WinSock error codes (values above 10000) in
errno, with corresponding support for $! to stringify them properly.
In Visual Studio 2010 (and presumably newer Windows SDKs) Microsoft
has started to define additional errno constants in errno.h (values
between 100 and 200) with conflicting names (e.g. EWOULDBLOCK).
There are 2 ways to deal with this situation:
1) Redefine the errno.h constants back to the winsock values for
the Errno and POSIX modules.
2) Translate the winsock error codes to the new errno constants
in the socket implementation in win32/win32sck.c.
Solution 1) has the advantage that any existing Perl code that has
numeric error codes hard-coded in it will continue to work.
Solution 2) has the advantage that XS code using external libaries can
set errno to the new constants, and they will be handled consistently
in the Perl core. It will however need additional support for other
compilers and runtime libraries that don't support these new error
codes.
This commit implements solution 1).
Blame attribution: the commit message is from Jan Dubois,
the actual patch was created by Steve Hay.
Signed-off-by: Jan Dubois <jand@activestate.com>
|
|
|
|
|
|
|
|
| |
perlre: Include a high-level description of what it does, and what a missing
pattern means
perlreref: Include missing look-around cases
Signed-off-by: Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
|
|
|
|
|
| |
It is better to test that a pointer is in bounds before dereferencing it
even though in this case it doesn't lead to an actual error.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Things like \S have not been accessible to the synthetic start class
under locale matching rules. They have been placed there, but the
start class didn't know they were there.
This patch sets ANYOF_CLASS in initializing the synthetic start class
so that downstream code knows it is a charclass_class, and removes
the code that partially allowed this bit to be shared, and which isn't
needed in 5.14, and more thought would have to go into doing it than
was reflected in the code.
I can't come up with a test case that would verify that this works,
because of general locale testing issues, except it looked at a dump of
the generated regex synthetic start class, but the dump isn't the same
thing as the real behavior, and using one is also subject to breakage if
the regex code changes in the slightest.
|
|
|
|
|
|
| |
The locale tests in this file assume that the code points 128-255 are
not printable, etc in the C locale. Some platforms do not conform to that
so test at the beginning for that.
|
|
|
|
|
|
|
| |
I'm only adding it because there was a comment at the top of
perldelta that this change was missing an entry. I'm not
sure it has to be mentioned at all, as it is not a full fix,
just making the issue less likely to occur.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Provide a preprocessor macro PERL_RELOCATABLE_INCPUSH to tell
incpush_use_sep() to ignore the passed in len argument. This
enables relocatable Perl distributions that patch the various
paths at install time.
Core Perl neither provides actual relocation scripts/programs,
nor endorses this practise as being "supported"; this patch
only makes it possible to create such tools. It is therefore
undocumented outside the source level comments.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is further work along the lines in RT #85964 and commit
af302e7fa58415c2d8454c8cbef7bccd8b504257. It reverts, for the the most
part, commits aa19b56b2f07e9eabf57540f00d312d8093e9d28 (Remove unused
parameter) and c613755a4b4fc8e64a77639d47d7e208fee68edc (/l in synthetic
start class).
Those commits caused the synthetic start class to often be marked as
matching under locale rules, even if there was no part of the regular
expression that used locale. This led to RT #85964, which made apparent
that there were a number of assumptions in the optimizer about locale
that were no longer necessarily true. This new commit changes things so
that locale has to be somewhere in the regex in order to get the
synthetic start class to include /l. In other words, this reverts the
effect of those commits to regular expression which have /l -- we go
back to the old way of doing things for non-locale regexes. This limits
any bugs that may have been introduced by the addition of /l (and being
able to match only sub-parts of a regex under locale) to the relatively
uncommon regexes which actually use it. There are a number of bugs
that have surfaced for the locale rules regexes that have gone
unreported; and some say locale rules regexes should be deprecated.
|
|
|
|
|
|
| |
This reverts commit b8953805dfeee53cd2300f61834ba32ccaaefaa8.
These tests started passing as a side effect of a commit which now needs
to be reverted for other reasons.
|
|
|
|
|
| |
This reverts commit c45df5a16bb5a26a06275cc63f2c3e6b1d708184.
The parameter is about to be put back in.
|
|
|
|
|
| |
If any part of a pattern has /l, this flag will get set; for future
use.
|
| |
|
| |
|