]> git.vpit.fr Git - perl/modules/autovivification.git/blobdiff - autovivification.xs
Also check for definedness for MDEREF_[AH]V_vivify_rv2[ah]v_[ah]elem
[perl/modules/autovivification.git] / autovivification.xs
index b9843fb38ebc08628975f29c20dc75685e595300..c0e4edd917dc4264c695e05aadece7b09878cd0e 100644 (file)
@@ -929,10 +929,10 @@ hijack:
     goto do_AV_vivify_rv2av_aelem;
    case MDEREF_AV_padsv_vivify_rv2av_aelem: /* $lex->[...] */
     sv = PAD_SVl((++items)->pad_offset);
-    if (a_undef(sv))
-     goto ret_undef;
     /* FALLTHROUGH */
    case MDEREF_AV_vivify_rv2av_aelem: /* vivify, ->[...] */
+    if (a_undef(sv))
+     goto ret_undef;
 do_AV_vivify_rv2av_aelem:
     sv = Perl_vivify_ref(aTHX_ sv, OPpDEREF_AV);
 do_AV_rv2av_aelem:
@@ -972,9 +972,9 @@ check_elem:
        sv = a_do_pp_aelem(sv, esv);
       }
       goto finish;
-     } else {
-      sv = a_do_pp_aelem(sv, esv);
      }
+     sv = a_do_pp_aelem(sv, esv);
+     break;
     }
    case MDEREF_HV_padhv_helem: /* $lex{...} */
     sv = PAD_SVl((++items)->pad_offset);
@@ -1002,10 +1002,10 @@ check_elem:
     goto do_HV_vivify_rv2hv_helem;
    case MDEREF_HV_padsv_vivify_rv2hv_helem: /* $lex->{...} */
     sv = PAD_SVl((++items)->pad_offset);
-    if (a_undef(sv))
-     goto ret_undef;
     /* FALLTHROUGH */
    case MDEREF_HV_vivify_rv2hv_helem: /* vivify, ->{...} */
+    if (a_undef(sv))
+     goto ret_undef;
 do_HV_vivify_rv2hv_helem:
     sv = Perl_vivify_ref(aTHX_ sv, OPpDEREF_HV);
 do_HV_rv2hv_helem:
@@ -1040,9 +1040,9 @@ do_HV_helem:
        sv = a_do_pp_helem(sv, key);
       }
       goto finish;
-     } else {
-      sv = a_do_pp_helem(sv, key);
      }
+     sv = a_do_pp_helem(sv, key);
+     break;
     }
   }