Branch Coverage

cbor_free_decode.c
Criterion Covered Total %
branch 167 180 92.7


line true false branch
93 195 11 if (!(decstate->flags & CBF_FLAG_PERSIST_STATE)) {
236 93 3 if (!(decstate->flags & CBF_FLAG_NAIVE_UTF8) && !is_utf8_string( (U8 *)buffer, len)) {
2 91 if (!(decstate->flags & CBF_FLAG_NAIVE_UTF8) && !is_utf8_string( (U8 *)buffer, len)) {
252 6 264 _RETURN_IF_INCOMPLETE( decstate, 2, 0 );
263 10 46 _RETURN_IF_INCOMPLETE( decstate, 3, 0);
274 34 128 _RETURN_IF_INCOMPLETE( decstate, 5, 0);
285 40 19 _RETURN_IF_INCOMPLETE( decstate, 9, 0);
326 39 132 if (CONTROL_BYTE_LENGTH_TYPE(*decstate->curbyte) == CBOR_LENGTH_INDEFINITE) {
330 4 79 _RETURN_IF_INCOMPLETE( decstate, 1, NULL );
332 12 67 if ( decstate->curbyte[0] == '\xff') {
339 23 44 _RETURN_IF_SET_INCOMPLETE(decstate, NULL);
346 2 127 _RETURN_IF_SET_INCOMPLETE(decstate, NULL);
348 108 19 if (array_length) {
352 533 54 for (i=0; i
354 5 479 _RETURN_IF_SET_INCOMPLETE(decstate, NULL);
356 0 479 if (!av_store(array, i, cur)) {
369 1 1908 if (CONTROL_BYTE_LENGTH_TYPE(*decstate->curbyte) == CBOR_LENGTH_INDEFINITE) {
379 1 45 if (CONTROL_BYTE_LENGTH_TYPE(*decstate->curbyte) == CBOR_LENGTH_INDEFINITE) {
384 16 26 _RETURN_IF_SET_INCOMPLETE(decstate, 0);
387 1 25 if (positive >= 0x8000000000000000U) {
412 11 3766 if (CONTROL_BYTE_LENGTH_TYPE(*decstate->curbyte) == CBOR_LENGTH_INDEFINITE) {
420 2 21 _RETURN_IF_INCOMPLETE( decstate, 1, false );
422 7 14 if (decstate->curbyte[0] == '\xff') {
431 2 12 _RETURN_IF_SET_INCOMPLETE( decstate, false );
444 41 3719 _RETURN_IF_SET_INCOMPLETE(decstate, false);
446 31 3688 _RETURN_IF_INCOMPLETE( decstate, string_u->numbuf.num.uv, false );
457 2 2585 _RETURN_IF_INCOMPLETE( decstate, 1, );
474 1 22 _RETURN_IF_SET_INCOMPLETE(decstate, );
484 1 2 _RETURN_IF_SET_INCOMPLETE(decstate, );
494 3 2548 _RETURN_IF_SET_INCOMPLETE(decstate, );
496 2545 3 if (!my_key_has_sv) {
497 0 2545 if (my_key.numbuf.num.uv > 0x7fffffffU) {
503 2515 30 if (SHOULD_VALIDATE_UTF8(decstate, major_type)) {
0 2515 if (SHOULD_VALIDATE_UTF8(decstate, major_type)) {
506 0 29 keylen = decstate->string_decode_mode == CBF_STRING_DECODE_NEVER ? my_key.numbuf.num.uv : -my_key.numbuf.num.uv;
522 3 2568 if (decstate->incomplete_by) {
523 1 2 if (my_key_has_sv) {
527 2 2566 else if (my_key_has_sv) {
541 8 59 if (CONTROL_BYTE_LENGTH_TYPE(*decstate->curbyte) == CBOR_LENGTH_INDEFINITE) {
545 2 11 _RETURN_IF_INCOMPLETE( decstate, 1, NULL );
547 4 7 if (decstate->curbyte[0] == '\xff') {
555 2 5 if ( decstate->incomplete_by ) {
562 5 51 if ( decstate->incomplete_by ) {
566 39 12 if (keycount) {
567 2580 22 while (keycount > 0) {
571 8 2563 if ( decstate->incomplete_by ) {
591 0 7 if (exp == 0) val = ldexp(mant, -24);
592 1 6 else if (exp != 31) val = ldexp(mant + 1024, exp - 25);
593 4 2 else val = mant == 0 ? INFINITY : NAN;
594 2 5 return half & 0x8000 ? -val : val;
622 4 1216 if (_decode_str( aTHX_ decstate, &string )) {
626 73 1143 _RETURN_IF_SET_INCOMPLETE(decstate, NULL);
635 11 3964 _RETURN_IF_INCOMPLETE( decstate, 1, NULL );
644 15 1867 if ( decstate->incomplete_by ) {
652 15 23 if ( decstate->incomplete_by ) {
661 73 1147 _RETURN_IF_SET_INCOMPLETE(decstate, NULL);
663 1083 64 if (SHOULD_VALIDATE_UTF8(decstate, CONTROL_BYTE_MAJOR_TYPE(control_byte))) {
2 1081 if (SHOULD_VALIDATE_UTF8(decstate, CONTROL_BYTE_MAJOR_TYPE(control_byte))) {
669 63 2 if (decstate->string_decode_mode != CBF_STRING_DECODE_NEVER) SvUTF8_on(ret);
675 34 85 _RETURN_IF_SET_INCOMPLETE(decstate, NULL);
680 17 38 _RETURN_IF_SET_INCOMPLETE(decstate, NULL);
685 1 197 if (CONTROL_BYTE_LENGTH_TYPE(control_byte) == CBOR_LENGTH_INDEFINITE) {
690 15 179 _RETURN_IF_SET_INCOMPLETE(decstate, NULL);
694 24 155 if (tagnum == CBOR_TAG_SHAREDREF && decstate->reflist) {
12 12 if (tagnum == CBOR_TAG_SHAREDREF && decstate->reflist) {
695 0 12 if (value_major_type != CBOR_TYPE_UINT) {
702 0 12 _RETURN_IF_SET_INCOMPLETE(decstate, NULL);
704 0 12 if (refnum >= decstate->reflistlen) {
713 5 162 _RETURN_IF_SET_INCOMPLETE(decstate, NULL);
715 17 145 if (tagnum == CBOR_TAG_INDIRECTION) {
718 24 121 else if (tagnum == CBOR_TAG_SHAREABLE && decstate->reflist) {
12 12 else if (tagnum == CBOR_TAG_SHAREABLE && decstate->reflist) {
720 0 12 Renew( decstate->reflist, decstate->reflistlen, void * );
725 102 31 else if (decstate->tag_handler) {
730 101 1 if (handler_cr && *handler_cr && SvOK(*handler_cr)) {
101 0 if (handler_cr && *handler_cr && SvOK(*handler_cr)) {
100 1 if (handler_cr && *handler_cr && SvOK(*handler_cr)) {
762 2 7 _RETURN_IF_INCOMPLETE( decstate, 3, NULL );
770 4 24 _RETURN_IF_INCOMPLETE( decstate, 5, NULL );
786 8 63 _RETURN_IF_INCOMPLETE( decstate, 9, NULL );
828 599 30 if (decode_state->curbyte == NULL) {
854 472 107 if (cbor) {
859 0 579 if (NULL != tag_handler) {
870 0 579 if (flags & CBF_FLAG_PRESERVE_REFERENCES) {
878 4 0 if (NULL == decode_state->reflist) {
884 4 579 if (NULL != decode_state->reflist) {
892 2 2 if (decode_state->reflistlen) {
901 102 477 if (NULL != decode_state->tag_handler) {
912 146 384 if (decode_state->incomplete_by) {
916 1 383 if (decode_state->curbyte != decode_state->end) {