Branch Coverage

oh_core.c
Criterion Covered Total %
branch 85 192 44.2


line true false branch
61 163 0 if (!self || !SvROK(self) || !SvOBJECT(SvRV(self)))
163 0 if (!self || !SvROK(self) || !SvOBJECT(SvRV(self)))
0 163 if (!self || !SvROK(self) || !SvOBJECT(SvRV(self)))
63 0 163 if (SvTYPE(SvRV(self)) != SVt_PVAV)
66 0 163 if (av_len(av) < 2)
70 163 0 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVHV)
163 0 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVHV)
163 0 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVHV)
0 163 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVHV)
75 163 0 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVAV)
163 0 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVAV)
163 0 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVAV)
0 163 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVAV)
80 163 0 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVAV)
163 0 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVAV)
163 0 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVAV)
0 163 if (!slot || !*slot || !SvROK(*slot) || SvTYPE(SvRV(*slot)) != SVt_PVAV)
90 14 0 if (!slot || !*slot) return 0;
0 14 if (!slot || !*slot) return 0;
99 10 0 if (slot && *slot)
10 0 if (slot && *slot)
133 1 29 if (he) {
136 0 1 if (!av_store(vals, pos, val))
144 0 29 if (!av_store(vals, av_len(keys), val)) {
149 0 29 if (!hv_store_ent(idx, key_sv, idx_sv, 0))
165 0 0 if (!he) return NULL;
169 0 0 if (!vslot || !*vslot) return sv_mortalcopy(&PL_sv_undef);
0 0 if (!vslot || !*vslot) return sv_mortalcopy(&PL_sv_undef);
194 40 28 for (i = pos; i < top; i++) {
196 40 0 if (src && *src) {
40 0 if (src && *src) {
198 0 40 if (!av_store(av, i, *src))
204 28 0 if (trailing) SvREFCNT_dec(trailing);
220 6 14 if (!deleted_idx) return NULL;
225 14 0 deleted_val = (vslot && *vslot) ? sv_mortalcopy(*vslot)
226 14 0 : sv_mortalcopy(&PL_sv_undef);
234 20 14 for (i = pos; i < n; i++) {
237 20 0 if (!kslot || !*kslot) continue;
0 20 if (!kslot || !*kslot) continue;
239 20 0 if (he && HeVAL(he)) sv_setiv(HeVAL(he), (IV)i);
20 0 if (he && HeVAL(he)) sv_setiv(HeVAL(he), (IV)i);
244 10 4 if (cur > n) oh_perl_iter_set(aTHX_ self, n);
256 8 0 if (!self || !SvROK(self) || SvTYPE(SvRV(self)) != SVt_PVAV)
8 0 if (!self || !SvROK(self) || SvTYPE(SvRV(self)) != SVt_PVAV)
0 8 if (!self || !SvROK(self) || SvTYPE(SvRV(self)) != SVt_PVAV)
261 8 0 if (slot) sv_setsv(*slot, sv_2mortal(newRV_noinc((SV *)newHV())));
263 8 0 if (slot) sv_setsv(*slot, sv_2mortal(newRV_noinc((SV *)newAV())));
265 8 0 if (slot) sv_setsv(*slot, sv_2mortal(newRV_noinc((SV *)newAV())));
267 8 0 if (slot) sv_setiv(*slot, 0);
296 0 0 if (iter->pos >= iter->end) return 0;
297 0 0 if (iter->pos > av_len(keys)) return 0;
300 0 0 if (!kslot || !*kslot) return 0;
0 0 if (!kslot || !*kslot) return 0;
304 0 0 *out_val = (vslot && *vslot) ? *vslot : &PL_sv_undef;
0 0 *out_val = (vslot && *vslot) ? *vslot : &PL_sv_undef;
316 0 0 if (!sv || !SvROK(sv) || !SvOBJECT(SvRV(sv))) return 0;
0 0 if (!sv || !SvROK(sv) || !SvOBJECT(SvRV(sv))) return 0;
0 0 if (!sv || !SvROK(sv) || !SvOBJECT(SvRV(sv))) return 0;
317 0 0 if (SvTYPE(SvRV(sv)) != SVt_PVAV) return 0;
319 0 0 if (!stash) return 0;
320 0 0 name = HvNAME_get(stash);
0 0 name = HvNAME_get(stash);
0 0 name = HvNAME_get(stash);
0 0 name = HvNAME_get(stash);
0 0 name = HvNAME_get(stash);
0 0 name = HvNAME_get(stash);
321 0 0 if (!name) return 0;
334 6 4 if (av_len(keys) < 0) {
335 6 0 if (out_key) *out_key = NULL;
341 4 0 if (kpop) hv_delete_ent(idx, kpop, G_DISCARD, 0);
343 4 0 if (out_key) *out_key = kpop ? sv_2mortal(kpop) : NULL;
4 0 if (out_key) *out_key = kpop ? sv_2mortal(kpop) : NULL;
344 4 0 return vpop ? sv_2mortal(vpop) : NULL;
355 6 4 if (av_len(keys) < 0) {
356 6 0 if (out_key) *out_key = NULL;
362 4 0 if (kshift) hv_delete_ent(idx, kshift, G_DISCARD, 0);
365 2 4 for (i = 0; i < n; i++) {
368 2 0 if (!kslot || !*kslot) continue;
0 2 if (!kslot || !*kslot) continue;
370 2 0 if (he && HeVAL(he)) sv_setiv(HeVAL(he), (IV)i);
2 0 if (he && HeVAL(he)) sv_setiv(HeVAL(he), (IV)i);
373 4 0 if (out_key) *out_key = kshift ? sv_2mortal(kshift) : NULL;
4 0 if (out_key) *out_key = kshift ? sv_2mortal(kshift) : NULL;
374 4 0 return vshift ? sv_2mortal(vshift) : NULL;
390 1 2 if (he) {
392 0 1 if (!av_store(vals, pos, val)) SvREFCNT_dec(val);
401 0 2 if (!av_store(keys, 0, kdup)) SvREFCNT_dec(kdup);
402 0 2 if (!av_store(vals, 0, val)) SvREFCNT_dec(val);
405 3 2 for (i = 1; i <= n; i++) {
408 3 0 if (!kslot || !*kslot) continue;
0 3 if (!kslot || !*kslot) continue;
410 3 0 if (he2 && HeVAL(he2)) sv_setiv(HeVAL(he2), (IV)i);
3 0 if (he2 && HeVAL(he2)) sv_setiv(HeVAL(he2), (IV)i);
416 2 0 SV *kdup = (kslot && *kslot) ? *kslot : key_sv;
2 0 SV *kdup = (kslot && *kslot) ? *kslot : key_sv;
417 0 2 if (!hv_store_ent(idx, kdup, idx_sv, 0))