X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=autovivification.xs;h=9e10bb5a9f00dd089321c6646f5c54580dd35f88;hb=0c37aa6a52c733eb61895b9c95054e5e2f689ede;hp=2669f3ca42b79ab9e1c8cc31ca7737b2585f0ede;hpb=ad8fec70fb96dcd2b0076da36a7659613c4a7062;p=perl%2Fmodules%2Fautovivification.git diff --git a/autovivification.xs b/autovivification.xs index 2669f3c..9e10bb5 100644 --- a/autovivification.xs +++ b/autovivification.xs @@ -548,13 +548,16 @@ STATIC OP *a_ck_root(pTHX_ OP *o) { } o = CALL_FPTR(old_ck)(aTHX_ o); - if (enabled) { - a_map_set_root(o, hint | A_HINT_DEREF); - a_map_store(o, o->op_ppaddr, hint); - o->op_ppaddr = a_pp_root; - } else { - a_map_set_root(o, 0); - } + if (hint & A_HINT_DO) { + if (enabled) { + a_map_set_root(o, hint | A_HINT_DEREF); + a_map_store(o, o->op_ppaddr, hint); + o->op_ppaddr = a_pp_root; + } else { + a_map_set_root(o, 0); + } + } else + a_map_delete(o); return o; }