In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/7f1bd063e5aa5aeb26ed9c39db6864cc0ecd7a73?hp=2e6807b5b9d6bff0efdfbbed7b7731e04ea21273>
- Log ----------------------------------------------------------------- commit 7f1bd063e5aa5aeb26ed9c39db6864cc0ecd7a73 Author: Father Chrysostomos <[email protected]> Date: Sun May 15 13:49:33 2016 -0700 [perl #128086] Test the prev commit M t/op/stash.t commit 60a26c797bbff039ea7f861903732e7cceae415a Author: Hugo van der Sanden <[email protected]> Date: Sun May 15 13:48:58 2016 -0700 [perl #128086] Fix precedence in hv_ename_delete A stashâs array of names may have null for the first entry, in which case it is not one of the effective names, and the name count will be negative. The âcount > 0â is meant to prevent hv_ename_delete from trying to read that entry, but a precedence problem introduced in 4643eb699 stopped it from doing that. [This commit message was written by the committer.] M hv.c commit 59a14f30f688ba05fd58f9dba1521fb9be116403 Author: Father Chrysostomos <[email protected]> Date: Sun May 15 11:01:36 2016 -0700 inline.h: Suppress g++ warning under threads In file included from perl.h:5853, from op.c:103: inline.h:712: warning: unused parameter 'my_perl' M inline.h commit 8e5993c4dcf9a5b7c84224dd04946a4e49ec96fe Author: Father Chrysostomos <[email protected]> Date: Sun May 15 10:59:18 2016 -0700 Dump empty-string ENAMEs as empty strings They were coming out as â(null)â, which is incorrect and confusing. M dump.c commit 01602aa1039240b47bbb31908b99c74240575514 Author: Father Chrysostomos <[email protected]> Date: Sun May 15 10:56:22 2016 -0700 op.c: Remove special cases for array funcs We no longer need special cases for the prototypes for array functions, since autodef has been removed, and these are now perfectly regular. M op.c ----------------------------------------------------------------------- Summary of changes: dump.c | 2 +- hv.c | 3 ++- inline.h | 1 + op.c | 6 ------ t/op/stash.t | 9 ++++++++- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/dump.c b/dump.c index c1303b6..8e11546 100644 --- a/dump.c +++ b/dump.c @@ -1818,7 +1818,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo HEK *const *const endp = HvAUX(sv)->xhv_name_u.xhvnameu_names + (count < 0 ? -count : count); while (hekp < endp) { - if (HEK_LEN(*hekp)) { + if (*hekp) { SV *tmp = newSVpvs_flags("", SVs_TEMP); Perl_sv_catpvf(aTHX_ names, ", \"%s\"", generic_pv_escape(tmp, HEK_KEY(*hekp), HEK_LEN(*hekp), HEK_UTF8(*hekp))); diff --git a/hv.c b/hv.c index 7b5ad95..5523475 100644 --- a/hv.c +++ b/hv.c @@ -2476,9 +2476,10 @@ Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags) return; } if ( - count > 0 && (HEK_UTF8(*namep) || (flags & SVf_UTF8)) + count > 0 && ((HEK_UTF8(*namep) || (flags & SVf_UTF8)) ? hek_eq_pvn_flags(aTHX_ *namep, name, (I32)len, flags) : (HEK_LEN(*namep) == (I32)len && memEQ(HEK_KEY(*namep), name, len)) + ) ) { aux->xhv_name_count = -count; } diff --git a/inline.h b/inline.h index 35983d8..46f8d9d 100644 --- a/inline.h +++ b/inline.h @@ -715,6 +715,7 @@ S_cx_popwhen(pTHX_ PERL_CONTEXT *cx) assert(CxTYPE(cx) == CXt_WHEN); PERL_UNUSED_ARG(cx); + PERL_UNUSED_CONTEXT; /* currently NOOP */ } diff --git a/op.c b/op.c index 81bd042..8c1dead 100644 --- a/op.c +++ b/op.c @@ -14605,13 +14605,7 @@ Perl_core_prototype(pTHX_ SV *sv, const char *name, const int code, case KEY_keys: retsetpvs("\\[%@]", OP_KEYS); case KEY_values: retsetpvs("\\[%@]", OP_VALUES); case KEY_each: retsetpvs("\\[%@]", OP_EACH); - case KEY_push: retsetpvs("\\@@", OP_PUSH); - case KEY_unshift: retsetpvs("\\@@", OP_UNSHIFT); - case KEY_pop: retsetpvs(";\\@", OP_POP); - case KEY_shift: retsetpvs(";\\@", OP_SHIFT); case KEY_pos: retsetpvs(";\\[$*]", OP_POS); - case KEY_splice: - retsetpvs("\\@;$$@", OP_SPLICE); case KEY___FILE__: case KEY___LINE__: case KEY___PACKAGE__: retsetpvs("", 0); case KEY_evalbytes: diff --git a/t/op/stash.t b/t/op/stash.t index 151b729..b8e0f34 100644 --- a/t/op/stash.t +++ b/t/op/stash.t @@ -7,7 +7,7 @@ BEGIN { BEGIN { require "./test.pl"; } -plan( tests => 51 ); +plan( tests => 52 ); # Used to segfault (bug #15479) fresh_perl_like( @@ -334,3 +334,10 @@ is runperl( ), "ok\n", '[perl #123847] no crash from *foo::=*bar::=*glob_with_hash'; + +is runperl( + prog => '%h; *::::::=*h; delete $::{q|::|}; print qq|ok\n|', + stderr => 1, + ), + "ok\n", + '[perl #128086] no crash from assigning hash to *:::::: & deleting it'; -- Perl5 Master Repository
