summaryrefslogtreecommitdiff
path: root/gv.c
diff options
context:
space:
mode:
authorDave Mitchell <davem@fdisolutions.com>2008-05-29 01:09:23 +0000
committerDave Mitchell <davem@fdisolutions.com>2008-05-29 01:09:23 +0000
commit5cee88ebb1df966ea735b751dd74adab79ad40e3 (patch)
treea0b130af67ff8ab8bed87512bcce7544fffec325 /gv.c
parent5ffb28623370356f786030bf4fb20004fa0d94d4 (diff)
downloadperl-5cee88ebb1df966ea735b751dd74adab79ad40e3.tar.gz
Integrate:
[ 33667] Subject: Re: [perl #52672] regexp failure: (?=) turns into OPFAIL From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com> Date: Thu, 10 Apr 2008 00:38:52 +0000 Message-ID: <51dd1af80804091738r15d37763lf900d59f8bcc5e81@mail.gmail.com> [ 33671] Add two missing dVAR's. [ 33675] Move all the logic to print the "Changed" message into regen_lib.pl, which removes the need for any checksums. Arrange for regen.pl to run autodoc.pl last, as it wants to open files generated by reentr.pl. [ 33684] Fix for [perl #52074] Segfault on ISA push after symbol table delete This restores the 5.8.8 behaviour. The deleted stash is not vivified again, hence the hierarchy remains broken. But there's no segfault. [ 33687] Subject: invalid cop_free of nullified cop. How to fix? From: "Reini Urban" <rurban@x-ray.at> Date: Tue, 15 Apr 2008 14:09:11 +0200 Message-ID: <6910a60804150509j3c100fc4t2ed303ae0124ba15@mail.gmail.com> [ 33695] Call cop_free on nullified cops too (this is a followup to 33687) [ 33696] Using memEQ() rather than strnEQ() when the length is known feels cleaner. [ 33697] Add the verbatim perl code mentioned in the comments of http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2001-05/msg01710.html but never actually tested. [ 33700] Use like() rather than is() to get better failure diagnostics. (One step beyond Jarkko's change 15735) [ 33701] Avoid forwards and then backwards on the :: splitting logic in Perl_gv_fetchmethod_autoload() [ 33714] Subject: Re: wrong line numbers in elsif() From: Paul Johnson <paul@pjcj.net> Date: Sat, 19 Apr 2008 13:02:06 +0200 Message-ID: <20080419110206.GE32555@pjcj.net> p4raw-link: @33714 on //depot/perl: 7ecdd211705c44c1696529960c8ab5c1ad8f4c65 p4raw-link: @33701 on //depot/perl: c94593d00233fc038590bd1033bbe8f67f02f70c p4raw-link: @33700 on //depot/perl: 2f90724352f52b809834d375ef5bab2c674fdad4 p4raw-link: @33697 on //depot/perl: b91ba1f24f52edc181821f93840733a1b39a2451 p4raw-link: @33696 on //depot/perl: 7edbdc6bb49f5970d9a4f23864d7626f8390de5c p4raw-link: @33695 on //depot/perl: cc93af5fbd42046d3d6e19c3655b76edf6980b42 p4raw-link: @33687 on //depot/perl: c53f1caa29d8829011cc4dd8948bd9947d957fba p4raw-link: @33684 on //depot/perl: 5562fa714b8071354c365365c26a950efa73179a p4raw-link: @33675 on //depot/perl: 523b30316ccbf7957aa8da41729ba68b3a5f47b5 p4raw-link: @33671 on //depot/perl: a2e578dad2f237dd09854deb3a557d2eeeb56a83 p4raw-link: @33667 on //depot/perl: 89c6a13e141e02cc3af670ab47c1d41ac4e81ba0 p4raw-id: //depot/maint-5.10/perl@33947 p4raw-integrated: from //depot/perl@33946 'copy in' t/op/method.t (@22091..) t/op/universal.t (@30806..) t/mro/pkg_gen.t (@31239..) regen_lib.pl (@33608..) regen.pl (@33646..) 'merge in' t/op/re_tests (@33324..) perlio.c (@33504..) p4raw-integrated: from //depot/perl@33714 'copy in' ext/B/t/deparse.t (@33163..) ext/B/B/Deparse.pm (@33661..) p4raw-integrated: from //depot/perl@33701 'edit in' gv.c (@33696..) p4raw-integrated: from //depot/perl@33695 'edit in' op.c (@33687..) p4raw-integrated: from //depot/perl@33684 'merge in' mg.c (@33627..) p4raw-integrated: from //depot/perl@33671 'merge in' perl.c (@33639..) p4raw-integrated: from //depot/perl@33667 'merge in' regcomp.c (@33370..)
Diffstat (limited to 'gv.c')
-rw-r--r--gv.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/gv.c b/gv.c
index 5be19f2d94..d24b8ece7d 100644
--- a/gv.c
+++ b/gv.c
@@ -498,7 +498,7 @@ Perl_gv_fetchmeth_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 le
if (!stash)
return NULL; /* UNIVERSAL::AUTOLOAD could cause trouble */
- if (len == S_autolen && strnEQ(name, S_autoload, S_autolen))
+ if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
return NULL;
if (!(gv = gv_fetchmeth(stash, S_autoload, S_autolen, FALSE)))
return NULL;
@@ -594,22 +594,23 @@ Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload)
const char *nsplit = NULL;
GV* gv;
HV* ostash = stash;
+ const char * const origname = name;
if (stash && SvTYPE(stash) < SVt_PVHV)
stash = NULL;
for (nend = name; *nend; nend++) {
- if (*nend == '\'')
+ if (*nend == '\'') {
nsplit = nend;
- else if (*nend == ':' && *(nend + 1) == ':')
- nsplit = ++nend;
+ name = nend + 1;
+ }
+ else if (*nend == ':' && *(nend + 1) == ':') {
+ nsplit = nend++;
+ name = nend + 1;
+ }
}
if (nsplit) {
- const char * const origname = name;
- name = nsplit + 1;
- if (*nsplit == ':')
- --nsplit;
- if ((nsplit - origname) == 5 && strnEQ(origname, "SUPER", 5)) {
+ if ((nsplit - origname) == 5 && memEQ(origname, "SUPER", 5)) {
/* ->SUPER::method should really be looked up in original stash */
SV * const tmpstr = sv_2mortal(Perl_newSVpvf(aTHX_ "%s::SUPER",
CopSTASHPV(PL_curcop)));
@@ -674,7 +675,7 @@ Perl_gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method)
const char *packname = "";
STRLEN packname_len = 0;
- if (len == S_autolen && strnEQ(name, S_autoload, S_autolen))
+ if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
return NULL;
if (stash) {
if (SvTYPE(stash) < SVt_PVHV) {