X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=autovivification.xs;h=68bc21789fda3452a09550ecd9a3276cb8c0a2b1;hb=refs%2Ftags%2Fv0.02;hp=b307fcbaf205f58c0e9d9a934e6ee0ea73f55a29;hpb=66a75622a9e10465ef5117c5c68a78e493406234;p=perl%2Fmodules%2Fautovivification.git diff --git a/autovivification.xs b/autovivification.xs index b307fcb..68bc217 100644 --- a/autovivification.xs +++ b/autovivification.xs @@ -176,11 +176,7 @@ STATIC const a_op_info *a_map_fetch(const OP *o, a_op_info *oi) { #endif val = ptable_fetch(a_op_map, o); - if (val) { - *oi = *val; - val = oi; - } else - oi->old_pp = 0; + *oi = *val; #ifdef USE_ITHREADS MUTEX_UNLOCK(&a_op_map_mutex); @@ -313,9 +309,6 @@ STATIC OP *a_pp_rv2hv(pTHX) { /* ... pp_deref (aelem,helem,rv2sv,padsv) .................................. */ -STATIC const char a_msg_forbidden[] = "Reference vivification forbidden"; -STATIC const char a_msg_impossible[] = "Can't vivify reference"; - STATIC OP *a_pp_deref(pTHX) { a_op_info oi; UV flags; @@ -338,11 +331,11 @@ deref: SPAGAIN; if (!SvOK(TOPs)) { if (flags & A_HINT_STRICT) - croak(a_msg_forbidden); + croak("Reference vivification forbidden"); else if (flags & A_HINT_WARN) - warn(a_msg_forbidden); + warn("Reference was vivified"); else /* A_HINT_STORE */ - croak(a_msg_impossible); + croak("Can't vivify reference"); } } @@ -545,7 +538,7 @@ STATIC OP *a_ck_rv2xv(pTHX_ OP *o) { return o; } -/* ... ck_root (exists,delete) ............................................. */ +/* ... ck_root (exists,delete,keys,values) ................................. */ STATIC OP *(*a_old_ck_exists)(pTHX_ OP *) = 0; STATIC OP *(*a_old_ck_delete)(pTHX_ OP *) = 0;