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

Reply via email to