diff options
author | Dave Mitchell <davem@fdisolutions.com> | 2008-05-29 01:09:23 +0000 |
---|---|---|
committer | Dave Mitchell <davem@fdisolutions.com> | 2008-05-29 01:09:23 +0000 |
commit | 5cee88ebb1df966ea735b751dd74adab79ad40e3 (patch) | |
tree | a0b130af67ff8ab8bed87512bcce7544fffec325 /gv.c | |
parent | 5ffb28623370356f786030bf4fb20004fa0d94d4 (diff) | |
download | perl-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.c | 21 |
1 files changed, 11 insertions, 10 deletions
@@ -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) { |