Branch Coverage

xs-src/pack.c
Criterion Covered Total %
branch 123 274 44.8


line true false branch
28 395 6972 if (enc->cur + len >= enc->end) {
78 89 0 if(strEQ(mg->mg_ptr, DMP_PREF_INT)) {
79 89 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 89 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
67 22 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
67 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 67 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 22 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
22 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
22 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
1 21 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 1 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
21 1 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
0 0 MY_CXT.prefer_int = SvTRUE(sv) ? true : false;
101 25 0 if(!cloning) {
113 25 0 SvSETMAGIC(var);
122 34 1 if (len == 0) { return 0; }
124 12 22 if (*p == '-') {
126 4 8 if (len <= 1 || len > 11) { return 0; }
131 18 4 if (len > 10) { return 0; }
138 61 5 if (c > 9) { return 0; }
140 44 17 } while(p < pe);
159 4 13 if (negative) {
160 4 0 if (num > 0x80000000) { return 0; }
163 13 0 if (num > 0xFFFFFFFF) { return 0; }
175 4 5715 if (UNLIKELY(depth <= 0)) Perl_croak(aTHX_ ERR_NESTING_EXCEEDED);
176 27 5688 SvGETMAGIC(sv);
178 1669 4046 if (SvPOKp(sv)) {
182 35 1634 if (enc->prefer_int && try_int(enc, pv, len)) {
18 17 if (enc->prefer_int && try_int(enc, pv, len)) {
185 26 1626 if (utf8) {
193 27 4019 } else if (SvNOKp(sv)) {
195 1249 2770 } else if (SvIOKp(sv)) {
196 0 1249 if(SvUOK(sv)) {
201 1972 798 } else if (SvROK(sv)) {
203 798 0 } else if (!SvOK(sv)) {
798 0 } else if (!SvOK(sv)) {
798 0 } else if (!SvOK(sv)) {
205 0 0 } else if (isGV(sv)) {
222 0 1972 SvGETMAGIC(sv);
225 62 1910 if (SvOBJECT (sv)) {
227 62 0 if (SvSTASH (sv) == stash) {
228 62 0 if (SvIV(sv)) {
25 37 if (SvIV(sv)) {
234 0 0 croak ("encountered object '%s', Data::MessagePack doesn't allow the object",
237 754 1156 } else if (svt == SVt_PVHV) {
242 2 752 if (SvTIED_mg(sv,PERL_MAGIC_tied)) {
2 0 if (SvTIED_mg(sv,PERL_MAGIC_tied)) {
244 6 2 while (hv_iternext (hval))
250 743 11 if (enc->canonical) {
255 42 11 while ((he = hv_iternext(hval))) {
263 42 11 for (i=0; i
269 745 743 while ((he = hv_iternext(hval))) {
273 1156 0 } else if (svt == SVt_PVAV) {
278 3868 130 for (i=0; i
280 3868 0 if (svp) {
286 0 0 } else if (svt < SVt_PVAV) {
288 0 0 char *pv = svt ? SvPV (sv, len) : 0;
0 0 char *pv = svt ? SvPV (sv, len) : 0;
290 0 0 if (len == 1 && *pv == '1')
0 0 if (len == 1 && *pv == '1')
292 0 0 else if (len == 1 && *pv == '0')
0 0 else if (len == 1 && *pv == '0')
296 0 0 croak("cannot encode reference to scalar '%s' unless the scalar is 0 or 1",
300 0 0 croak ("encountered %s, but msgpack can only represent references to arrays or hashes",
307 0 277 if (items < 2) {
315 3 274 if (items >= 3) depth = SvIVx(ST(2));
3 0 if (items >= 3) depth = SvIVx(ST(2));
326 44 233 if(SvROK(self) && SvTYPE(SvRV(self)) == SVt_PVHV) {
44 0 if(SvROK(self) && SvTYPE(SvRV(self)) == SVt_PVHV) {
331 14 30 if(svp) {
332 14 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 14 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 14 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 14 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
14 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
14 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
1 13 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 1 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
13 1 enc.prefer_int = SvTRUE(*svp) ? true : false;
0 0 enc.prefer_int = SvTRUE(*svp) ? true : false;
336 11 33 if(svp) {
337 11 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 11 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 11 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 11 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
11 0 enc.canonical = SvTRUE(*svp) ? true : false;
11 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 11 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
11 0 enc.canonical = SvTRUE(*svp) ? true : false;
0 0 enc.canonical = SvTRUE(*svp) ? true : false;
341 24 20 if (svp) {
342 24 0 utf8 = SvTRUE(*svp) ? true : false;
0 24 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;
0 24 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;
0 24 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;
24 0 utf8 = SvTRUE(*svp) ? true : false;
24 0 utf8 = SvTRUE(*svp) ? true : false;
0 24 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;
24 0 utf8 = SvTRUE(*svp) ? true : false;
0 0 utf8 = SvTRUE(*svp) ? true : false;