| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Currently only pad_add_STATE and pad_add_FAKE are used. The length is cross-
checked against strlen() on the pointer, but the intent is to re-work the entire
pad API to be UTF-8 aware, from the current situation of char * pointers only.
|
|
|
|
|
|
| |
Currently only pad_add_OUR is used. The length is cross-checked against
strlen() on the pointer, but the intent is to re-work the entire pad API to
be UTF-8 aware, from the current situation of char * pointers only.
|
|
|
|
|
|
| |
Currently no flags bits are used, and the length is cross-checked against
strlen() on the pointer, but the intent is to re-work the entire pad API to
be UTF-8 aware, from the current situation of char * pointers only.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Attached is a patch that removes from utfebcdic.h most definitions that
are common to it and utf8.h, and moves them to the common area of
utf8.h. The duplicate ones that are retained are each an integral part
of a larger related set that do differ between the headers.
Some of the definitions had started to drift, so this brings them back
into line, with a lowered possibility of future drift. In particular
the ones for the 'lazy' macros did not do quite as intended, especially
in the EBCDIC case. The bugs were a small performance hit only, in that
the macro was not quite as lazy as expected, and so loaded utf8_heavy.pl
possibly unnecessarily. In examining these, I noted that the utf8.h
definition of the start byte of a utf8 encoded string accepts invalid
start bytes 0xC0 and 0xC1. These are invalid because they are for
overlong encodings of ASCII code points. One is not supposed to allow
these, and there have been security attacks, according to Wikipedia,
against code that does. But I don't know all the ramifications for Perl
of changing to exclude these, so I left it alone, but added a comment
(and an item on my personal todo list to check into it).
I made some comment clarifications, and removed some definitions marked
as obsolete in utf8.h that are in fact no longer used.
I added some synonyms for existing macros that more clearly reflect the
use that I intend to put them to in future patches.
From ba581aa4db767e5531ec0c0efdea5de4e9b09921 Mon Sep 17 00:00:00 2001
From: Karl Williamson <khw@khw-desktop.(none)>
Date: Mon, 9 Nov 2009 08:38:24 -0700
Subject: [PATCH] Clean up utf headers
Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
|
|
|
|
| |
and it always needed that, but re-ordering of targets has exposed that
|
|
|
|
| |
It already knows its length, and it will be UTF-8 clean in the future.
|
| |
|
|
|
|
|
|
|
| |
Changes for 0.51_01 Sun Nov 8 22:36:33 GMT 2009
=================================================
* Apply patch from Petya Kohts, RT #50398, which adds
run_forked()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's possible during global destruction that the GV is freed before the
optree. Whilst the SvREFCNT_inc is happy to bump from 0 to 1 on a freed SV,
the corresponding SvREFCNT_dec from 1 to 0 will trigger an assertion
failure, because the entry to sv_clear checks that the scalar is not already
freed. A check of for !SvIS_FREED(gv) turns out to be invalid, because
during global destruction the reference count can be forced down to zero
(with SVf_BREAK set). In which case raising to 1 and then dropping to 0
triggers cleanup before it should happen. I *think* that this might
actually be a general, systematic, weakness of the whole idea of SVf_BREAK,
in that code *is* allowed to raise and lower references during global
destruction, so any *valid* code that happens to do this during global
destruction might well trigger premature cleanup.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Attached is a patch that changes how the tokeniser looks up subroutines,
when they're referenced by a bareword, for prototype and const-sub
purposes. Formerly, it has looked up bareword subs directly in the
package, which is contrary to the way the generated op tree looks up
the sub, via an rv2cv op. The patch makes the tokeniser generate the
rv2cv op earlier, and dig around in that.
The motivation for this is to allow modules to hook the rv2cv op
creation, to affect the name->subroutine lookup process. Currently,
such hooking affects op execution as intended, but everything goes wrong
with a bareword ref where the tokeniser looks at some unrelated CV,
or a blank space, in the package. With the patch in place, an rv2cv
hook correctly affects the tokeniser and therefore the prototype-based
aspects of parsing.
The patch also changes ck_subr (which applies the argument context and
checking parts of prototype behaviour) to handle subs referenced by an
RV const op inside the rv2cv, where formerly it would only handle a gv
op inside the rv2cv. This is to support the most likely kind of
modified rv2cv op.
The attached patch is the resulting revised version of the bareword
sub patch. It incorporates the original patch (allowing rv2cv op
hookers to control prototype processing), the GV-downgrading addition,
and a mention in perldelta.
|
|
|
|
|
|
|
| |
Rationale: This makes the behaviour of my_exit consistent, so it no
longer depends on whether a subroutine was called using call_sv or as a
normal using an entersub op. Previously, the exit code was sometimes
converted to an exception.
|
| |
|
|
|
|
|
|
| |
Since Nicholas made pad_findmy() part of the public API
(f8f98e0a8bdbde83a9cdc3573d818f69d0a64c78), here's a consequential
change to XS::APItest::KeywordRPN.
|
|
|
|
| |
[perl #70303] I18N::Langinfo docs "nothing exported"
|
|\ |
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
|
|
|
|
| |
Files provided by Sisyphus with this comment: "Attached are the 2
addtional files that we need in the win32 folder. (I did a dos2unix on
them so, hopefully the line endings will be right.) These files are
needed to accommodate the particular 64-bit mingw compiler that
Strawberry Perl will be using. They'll actually be used as the default
64-bit mingw templates."
|
|
|
|
|
|
| |
Already in the upstream queue at:
https://rt.cpan.org/Ticket/Display.html?id=51184
|
| |
|
|
|
|
|
|
|
|
| |
API.
Currently no flags bits are used, and the length is cross-checked against
strlen() on the pointer, but the intent is to re-work the entire pad API to be
UTF-8 aware, from the current situation of char * pointers only.
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A smoke using g++ has revealed:
>KeywordRPN.c: In function 'void XS_XS__APItest__KeywordRPN_import(CV*)':
>KeywordRPN.c:320: error: expected unqualified-id before 'class'
>KeywordRPN.c:320: error: expected initializer before 'class'
>KeywordRPN.c: In function 'void XS_XS__APItest__KeywordRPN_unimport(CV*)':
>KeywordRPN.c:357: error: expected unqualified-id before 'class'
>KeywordRPN.c:357: error: expected initializer before 'class'
>make[1]: *** [KeywordRPN.o] Error 1
>Unsuccessful make(ext/XS-APItest-KeywordRPN): code=512 at make_ext.pl line 449.
>make: *** [lib/auto/XS/APItest/KeywordRPN/KeywordRPN.so] Error 25
I used "class" as a variable name, but in C++ it's a keyword. Patch
attached. Someone should also add a note about C++ compatibility to
perlhack.pod.
-zefram
Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
|
| | |
|
| | |
|
| |\
| | |
| | |
| | |
| | | |
Conflicts:
MANIFEST
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
the original files insted of to the copied files perlmini.c and opmini.c
|
| | |
| | |
| | |
| | | |
warnings (the "return NORMAL"s are never reached).
|
| | |
| | |
| | |
| | | |
instead of the arena flag, which is not set with PURIFY
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Carp frequently gets loaded very early, before tools that want to
override caller(). Previously, caller() was only in Carp::Heavy,
which was only loaded on demand (thus after any CORE::GLOBAL::caller
override). This patch unbreaks anything expecting the old behavior.
|
| | |
| | |
| | |
| | | |
There is currently still a linker error about PL_keyword_plugin.
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
Use $cpp instead of cpp
|
| | |
| | |
| | |
| | | |
syntax triggered by keywords
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Date: Tue, 27 Oct 2009 01:29:40 +0000
From: Zefram <zefram@fysh.org>
To: perl5-porters@perl.org
Subject: bareword sub lookups
Attached is a patch that changes how the tokeniser looks up subroutines,
when they're referenced by a bareword, for prototype and const-sub
purposes. Formerly, it has looked up bareword subs directly in the
package, which is contrary to the way the generated op tree looks up
the sub, via an rv2cv op. The patch makes the tokeniser generate the
rv2cv op earlier, and dig around in that.
The motivation for this is to allow modules to hook the rv2cv op
creation, to affect the name->subroutine lookup process. Currently,
such hooking affects op execution as intended, but everything goes wrong
with a bareword ref where the tokeniser looks at some unrelated CV,
or a blank space, in the package. With the patch in place, an rv2cv
hook correctly affects the tokeniser and therefore the prototype-based
aspects of parsing.
The patch also changes ck_subr (which applies the argument context and
checking parts of prototype behaviour) to handle subs referenced by an
RV const op inside the rv2cv, where formerly it would only handle a gv
op inside the rv2cv. This is to support the most likely kind of modified
rv2cv op.
[This commit includes the Makefile.PL for XS-APITest-KeywordRPN missing
from the original patch, as well as updates to perldiag.pod and a
MANIFEST sort]
|
| | | |
|
| | | |
|