Branch Coverage

srl_decoder.c
Criterion Covered Total %
branch 459 998 45.9


line true false branch
227 179398 109 if (opt != NULL) {
228 2 179396 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_REFUSE_SNAPPY);
229 2 179396 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
232 0 179398 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_REFUSE_ZLIB);
233 0 179398 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
236 0 179398 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_REFUSE_ZSTD);
237 0 179398 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
240 2 179396 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_REFUSE_OBJECTS);
241 2 179396 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
244 1 179397 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_NO_BLESS_OBJECTS);
245 1 179397 if ( val && SvTRUE(val) )
1 0 if ( val && SvTRUE(val) )
0 1 if ( val && SvTRUE(val) )
0 1 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 1 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
1 0 if ( val && SvTRUE(val) )
1 0 if ( val && SvTRUE(val) )
0 1 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
1 0 if ( val && SvTRUE(val) )
248 12 179386 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_VALIDATE_UTF8);
249 12 179386 if ( val && SvTRUE(val) )
12 0 if ( val && SvTRUE(val) )
0 12 if ( val && SvTRUE(val) )
0 12 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 12 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
12 0 if ( val && SvTRUE(val) )
12 0 if ( val && SvTRUE(val) )
0 12 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
12 0 if ( val && SvTRUE(val) )
252 2 179396 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_MAX_RECURSION_DEPTH);
253 2 179396 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
254 0 2 dec->max_recursion_depth = SvUV(val);
256 6 179392 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_MAX_NUM_HASH_ENTRIES);
257 6 179392 if ( val && SvTRUE(val) )
6 0 if ( val && SvTRUE(val) )
0 6 if ( val && SvTRUE(val) )
0 6 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 6 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
6 0 if ( val && SvTRUE(val) )
6 0 if ( val && SvTRUE(val) )
1 5 if ( val && SvTRUE(val) )
0 1 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
5 1 if ( val && SvTRUE(val) )
258 0 5 dec->max_num_hash_entries = SvUV(val);
260 2 179396 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_DESTRUCTIVE_INCREMENTAL);
261 2 179396 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
0 2 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
0 0 if ( val && SvTRUE(val) )
2 0 if ( val && SvTRUE(val) )
269 2 179396 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_ALIAS_VARINT_UNDER);
270 2 179396 if ( val && SvTRUE(val)) {
2 0 if ( val && SvTRUE(val)) {
0 2 if ( val && SvTRUE(val)) {
0 2 if ( val && SvTRUE(val)) {
0 0 if ( val && SvTRUE(val)) {
0 0 if ( val && SvTRUE(val)) {
0 2 if ( val && SvTRUE(val)) {
0 0 if ( val && SvTRUE(val)) {
0 0 if ( val && SvTRUE(val)) {
0 0 if ( val && SvTRUE(val)) {
0 0 if ( val && SvTRUE(val)) {
2 0 if ( val && SvTRUE(val)) {
2 0 if ( val && SvTRUE(val)) {
0 2 if ( val && SvTRUE(val)) {
0 0 if ( val && SvTRUE(val)) {
0 0 if ( val && SvTRUE(val)) {
2 0 if ( val && SvTRUE(val)) {
275 0 2 if (SvUV(val) < 16) {
0 2 if (SvUV(val) < 16) {
281 0 2 dec->alias_varint_under= SvUV(val);
287 179396 2 if ( !SRL_DEC_HAVE_OPTION(dec,SRL_F_DECODER_ALIAS_SMALLINT) ) {
288 1 179395 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_ALIAS_SMALLINT);
289 1 179395 if (val && SvTRUE(val))
1 0 if (val && SvTRUE(val))
0 1 if (val && SvTRUE(val))
0 1 if (val && SvTRUE(val))
0 0 if (val && SvTRUE(val))
0 0 if (val && SvTRUE(val))
0 1 if (val && SvTRUE(val))
0 0 if (val && SvTRUE(val))
0 0 if (val && SvTRUE(val))
0 0 if (val && SvTRUE(val))
0 0 if (val && SvTRUE(val))
1 0 if (val && SvTRUE(val))
1 0 if (val && SvTRUE(val))
0 1 if (val && SvTRUE(val))
0 0 if (val && SvTRUE(val))
0 0 if (val && SvTRUE(val))
1 0 if (val && SvTRUE(val))
299 3 179395 if (dec->alias_varint_under) {
309 0 179398 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_USE_UNDEF);
310 0 179398 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
314 12445 166953 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_SET_READONLY);
315 12445 166953 if ( val && SvTRUE(val))
12445 0 if ( val && SvTRUE(val))
0 12445 if ( val && SvTRUE(val))
0 12445 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 12445 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
12445 0 if ( val && SvTRUE(val))
12445 0 if ( val && SvTRUE(val))
0 12445 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
12445 0 if ( val && SvTRUE(val))
319 6 179392 my_hv_fetchs(he,val,opt, SRL_DEC_OPT_IDX_SET_READONLY_SCALARS);
320 6 179392 if ( val && SvTRUE(val))
6 0 if ( val && SvTRUE(val))
0 6 if ( val && SvTRUE(val))
0 6 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 6 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
6 0 if ( val && SvTRUE(val))
6 0 if ( val && SvTRUE(val))
0 6 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
0 0 if ( val && SvTRUE(val))
6 0 if ( val && SvTRUE(val))
324 167062 12445 dec->flags_readonly= SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_SET_READONLY ) ? 1 :
6 167056 dec->flags_readonly= SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_SET_READONLY ) ? 1 :
342 0 1 if (proto->alias_cache) {
360 5223 174285 if (dec->ref_stashes) {
364 3 179505 if (dec->weakref_av) {
368 0 179508 if (dec->ref_thawhash)
370 3 179505 if (dec->alias_cache)
386 179345 685795 if (!SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_REUSE)) {
404 58322 644329 if (expect_false( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_DECOMPRESS_SNAPPY) )) {
407 20140 624189 } else if (expect_false( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_DECOMPRESS_ZLIB) )) {
410 9536 614653 } else if (expect_false( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_DECOMPRESS_ZSTD) )) {
416 48771 653880 SRL_RDR_UPDATE_BODY_POS(dec->pbuf, dec->proto_version);
420 20164 682473 if (expect_false(SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_NEEDS_FINALIZE))) {
426 614638 87999 if (dec->bytes_consumed == 0) {
431 10 702627 if (SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_DESTRUCTIVE_INCREMENTAL)) {
433 10 0 char *pv= SvPV(src,len);
448 0 162480 if (header_into == NULL)
466 179288 523372 if (expect_true(!body_into))
488 523305 865127 if (dec->buf.start == dec->buf.end)
501 15 1027472 if (dec->weakref_av)
505 778326 249161 if (dec->ref_stashes) {
522 1 865139 if (SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_DIRTY)) {
537 3 865137 if (SvUTF8(src)) {
546 2 1 if ( ! SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_DESTRUCTIVE_INCREMENTAL) ) {
552 865140 0 tmp = (unsigned char*)SvPV(src, len);
553 0 865140 if (expect_false( start_offset > len )) {
576 7 865133 if ( expect_false(proto_version_and_encoding_flags_int < 1) ) {
577 2 5 if (proto_version_and_encoding_flags_int == 0)
588 48773 816360 if (expect_false( dec->proto_version == 1 ))
590 816360 0 else if (expect_false( dec->proto_version > SRL_PROTOCOL_VERSION || dec->proto_version < 1 ))
0 816360 else if (expect_false( dec->proto_version > SRL_PROTOCOL_VERSION || dec->proto_version < 1 ))
0 816360 else if (expect_false( dec->proto_version > SRL_PROTOCOL_VERSION || dec->proto_version < 1 ))
593 88000 777133 if (dec->encoding_flags == SRL_PROTOCOL_ENCODING_RAW) {
597 81518 6482 if ( dec->encoding_flags == SRL_PROTOCOL_ENCODING_SNAPPY
598 51842 29676 || dec->encoding_flags == SRL_PROTOCOL_ENCODING_SNAPPY_INCREMENTAL)
600 2 58322 if (expect_false( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_REFUSE_SNAPPY) )) {
607 20140 9536 if (dec->encoding_flags == SRL_PROTOCOL_ENCODING_ZLIB)
609 0 20140 if (expect_false( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_REFUSE_ZLIB) )) {
616 9536 0 if (dec->encoding_flags == SRL_PROTOCOL_ENCODING_ZSTD)
618 0 9536 if (expect_false( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_REFUSE_ZSTD) )) {
633 816360 48771 if (dec->proto_version > 1 && header_len) {
324840 491520 if (dec->proto_version > 1 && header_len) {
641 0 324840 SRL_RDR_ASSERT_SPACE(dec->pbuf, 1, " while reading header flags");
644 324840 0 if (bitfield & SRL_PROTOCOL_HDR_USER_DATA && header_user_data != NULL) {
162360 162480 if (bitfield & SRL_PROTOCOL_HDR_USER_DATA && header_user_data != NULL) {
646 0 162360 SRL_RDR_UPDATE_BODY_POS(dec->pbuf, dec->proto_version);
648 4680 157680 if (expect_false(SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_NEEDS_FINALIZE))) {
655 162480 0 SRL_RDR_ASSERT_SPACE(dec->pbuf, header_len, " while reading header packet");
0 162480 SRL_RDR_ASSERT_SPACE(dec->pbuf, header_len, " while reading header packet");
0 162480 SRL_RDR_ASSERT_SPACE(dec->pbuf, header_len, " while reading header packet");
672 11 24833 if (dec->weakref_av)
674 24841 3 if (dec->ref_stashes) {
682 25477 24841 while ( NULL != (ent = PTABLE_iter_next(it)) ) {
686 25477 0 if (expect_false( !stash || !ref_bless_av )) {
0 25477 if (expect_false( !stash || !ref_bless_av )) {
0 25477 if (expect_false( !stash || !ref_bless_av )) {
690 26122 25477 for( len= av_len(ref_bless_av) + 1 ; len > 0 ; len-- ) {
692 26122 0 if (SvREFCNT(obj)>1) {
700 26122 0 if (expect_true( obj )) {
704 26121 1 if (!nobless) {
705 1853 24268 if ( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_READONLY_FLAGS) && SvREADONLY(SvRV(obj))) {
1852 1 if ( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_READONLY_FLAGS) && SvREADONLY(SvRV(obj))) {
736 0 0 if (!dec->ref_thawhash)
745 0 218167 if (dec->ref_thawhash) {
765 1 314852 if (expect_false( !sv )) {
785 365 182 if (!av_array[ofs] || av_array[ofs] == &PL_sv_undef) {
0 365 if (!av_array[ofs] || av_array[ofs] == &PL_sv_undef) {
797 547 0 if (*container && *container != &PL_sv_undef)
547 0 if (*container && *container != &PL_sv_undef)
800 3 544 if (track_it)
809 518225 107697 if ( expect_false( container && IS_IV_ALIAS(dec,iv) )) {
547 517678 if ( expect_false( container && IS_IV_ALIAS(dec,iv) )) {
547 0 if ( expect_false( container && IS_IV_ALIAS(dec,iv) )) {
547 0 if ( expect_false( container && IS_IV_ALIAS(dec,iv) )) {
547 625375 if ( expect_false( container && IS_IV_ALIAS(dec,iv) )) {
817 625364 11 if ( SvTYPE(into) == SVt_NULL ) {
842 287743 43248 if (expect_true(uv <= (UV)IV_MAX)) {
872 101859 422391 if (expect_false(is_utf8 && SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_VALIDATE_UTF8))) {
9 101850 if (expect_false(is_utf8 && SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_VALIDATE_UTF8))) {
9 524241 if (expect_false(is_utf8 && SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_VALIDATE_UTF8))) {
874 3 6 if (expect_false( !is_utf8_string((U8*)dec->buf.pos, len) )) {
879 101856 422391 if (is_utf8) {
904 0 10812 SRL_RDR_ASSERT_SPACE(dec->pbuf, sizeof(float), " while reading FLOAT");
919 0 152640 SRL_RDR_ASSERT_SPACE(dec->pbuf, sizeof(double), " while reading DOUBLE");
934 0 0 SRL_RDR_ASSERT_SPACE(dec->pbuf, sizeof(long double), " while reading LONG_DOUBLE");
948 465157 320832 if (tag) {
951 465121 36 SRL_sv_set_rv_to(into, referent);
465120 1 SRL_sv_set_rv_to(into, referent);
36 1 SRL_sv_set_rv_to(into, referent);
0 36 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
953 1 465156 DEPTH_INCREMENT(dec);
956 320832 0 (void)SvUPGRADE(into, SVt_PVAV);
959 763066 22922 if (len) {
963 763066 0 SRL_RDR_ASSERT_SPACE(dec->pbuf,len," while reading array contents, insufficient remaining tags for specified array size");
0 763066 SRL_RDR_ASSERT_SPACE(dec->pbuf,len," while reading array contents, insufficient remaining tags for specified array size");
0 763066 SRL_RDR_ASSERT_SPACE(dec->pbuf,len," while reading array contents, insufficient remaining tags for specified array size");
973 1860143 762065 for ( ; av_array < av_end ; av_array++) {
978 464155 320832 if (tag)
997 131909 95648 if (tag) {
1000 131900 9 SRL_sv_set_rv_to(into, referent);
131900 0 SRL_sv_set_rv_to(into, referent);
9 0 SRL_sv_set_rv_to(into, referent);
3 6 SRL_sv_set_rv_to(into, referent);
0 3 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
1002 0 131909 DEPTH_INCREMENT(dec);
1005 95648 0 (void)SvUPGRADE(into, SVt_PVHV);
1014 5 227552 if (expect_false( dec->max_num_hash_entries != 0 && num_keys > dec->max_num_hash_entries )) {
4 1 if (expect_false( dec->max_num_hash_entries != 0 && num_keys > dec->max_num_hash_entries )) {
4 227553 if (expect_false( dec->max_num_hash_entries != 0 && num_keys > dec->max_num_hash_entries )) {
1019 227553 0 SRL_RDR_ASSERT_SPACE(dec->pbuf,num_keys*2," while reading hash contents, insufficient remaining tags for number of keys specified");
0 227553 SRL_RDR_ASSERT_SPACE(dec->pbuf,num_keys*2," while reading hash contents, insufficient remaining tags for number of keys specified");
0 227553 SRL_RDR_ASSERT_SPACE(dec->pbuf,num_keys*2," while reading hash contents, insufficient remaining tags for number of keys specified");
1026 644924 227552 for (; num_keys > 0 ; num_keys--) {
1035 0 644924 SRL_RDR_ASSERT_SPACE(dec->pbuf,1," while reading key tag byte for HASH");
1037 618105 26819 if (IS_SRL_HDR_SHORT_BINARY(tag)) {
1039 618105 0 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading string/SHORT_BINARY key");
0 618105 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading string/SHORT_BINARY key");
0 618105 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading string/SHORT_BINARY key");
1042 12609 14210 } else if (tag == SRL_HDR_BINARY) {
1044 12609 0 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading binary key");
0 12609 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading binary key");
0 12609 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading binary key");
1047 3 14207 } else if (tag == SRL_HDR_STR_UTF8) {
1049 3 0 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading string key");
0 3 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading string key");
0 3 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading string key");
1057 14207 0 } else if (tag == SRL_HDR_COPY) {
1063 14207 0 if (IS_SRL_HDR_SHORT_BINARY(tag)) {
1067 0 0 if (tag == SRL_HDR_BINARY) {
1074 0 0 if (tag == SRL_HDR_STR_UTF8) {
1091 1 644923 if (SvREADONLY(into)) {
1099 0 644924 if (expect_false( !fetched_sv )) {
1103 0 644924 if ( expect_false( SvTYPE(*fetched_sv) != SVt_NULL ) ) {
1109 131908 95644 if (tag)
1119 0 955869 SRL_RDR_ASSERT_SPACE(dec->pbuf, 1, " while reading REFN referent");
1121 1 955868 if (tag == SRL_HDR_TRUE) {
1125 1 955867 else if (tag == SRL_HDR_FALSE) {
1138 932016 23851 if (
1140 0 932016 ||
1141 0 0 ( SRL_DEC_HAVE_OPTION(dec,SRL_F_DECODER_USE_UNDEF) && tag == SRL_HDR_UNDEF )
1151 955845 24 SRL_sv_set_rv_to(into, referent);
955838 7 SRL_sv_set_rv_to(into, referent);
24 7 SRL_sv_set_rv_to(into, referent);
3 21 SRL_sv_set_rv_to(into, referent);
0 3 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
1152 932016 23853 if (!tag) {
1153 0 932016 DEPTH_INCREMENT(dec);
1205 0 218167 if (thawed) {
1218 218167 0 SRL_sv_set_rv_to(into, referent);
218167 0 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
0 0 SRL_sv_set_rv_to(into, referent);
1238 0 13 if (expect_false( !SvROK(into) ))
1250 3 10 if (expect_true( SvREFCNT(referent)==1 )) {
1251 3 0 if (expect_false( !dec->weakref_av ))
1258 2 11 if ( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_READONLY_FLAGS) && SvREADONLY(into)) {
1 1 if ( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_READONLY_FLAGS) && SvREADONLY(into)) {
1273 0 645 if (expect_false( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_REFUSE_OBJECTS) ))
1278 0 645 if (expect_false( !dec->ref_bless_av )) {
1288 0 645 if (expect_false( NULL == av )) {
1297 0 645 if (expect_false( obj_tag == SRL_HDR_OBJECTV_FREEZE )) {
1299 0 0 if (expect_false( class_stash == NULL ))
1337 2 25479 if (expect_false( SRL_DEC_HAVE_OPTION(dec, SRL_F_DECODER_REFUSE_OBJECTS) ))
1345 0 25479 SRL_RDR_ASSERT_SPACE(dec->pbuf,1," while reading classname tag");
1351 25477 2 if (IS_SRL_HDR_SHORT_BINARY(tag)) {
1354 0 25477 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading short binary");
1358 0 2 if (tag == SRL_HDR_STR_UTF8) {
1362 0 0 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading utf8 string");
1366 1 1 if (tag == SRL_HDR_BINARY) {
1369 0 1 SRL_RDR_ASSERT_SPACE(dec->pbuf,key_len," while reading binary");
1373 1 0 if (tag == SRL_HDR_COPY) {
1381 0 1 if (expect_true( dec->ref_stashes != NULL )) {
1386 1 0 if (!class_stash) {
1391 0 1 if (IS_SRL_HDR_SHORT_BINARY(tag)) {
1395 0 1 if (tag == SRL_HDR_BINARY) {
1402 0 1 if (tag == SRL_HDR_STR_UTF8) {
1408 0 0 if (!is_utf8_string(from, key_len)) {
1422 5223 20255 SRL_ASSERT_REF_PTR_TABLES(dec);
1423 25478 0 if (!class_stash) {
1436 0 0 if ( !av )
1450 1 25477 if (expect_false( obj_tag == SRL_HDR_OBJECT_FREEZE )) {
1481 1 0 char *classname = HvNAME(class_stash);
1 0 char *classname = HvNAME(class_stash);
0 1 char *classname = HvNAME(class_stash);
0 0 char *classname = HvNAME(class_stash);
1 0 char *classname = HvNAME(class_stash);
0 1 char *classname = HvNAME(class_stash);
1494 0 1 if (expect_false( method == NULL ))
1495 0 0 SRL_RDR_ERRORf1(dec->pbuf, "No THAW method defined for class '%s'", HvNAME(class_stash));
0 0 SRL_RDR_ERRORf1(dec->pbuf, "No THAW method defined for class '%s'", HvNAME(class_stash));
0 0 SRL_RDR_ERRORf1(dec->pbuf, "No THAW method defined for class '%s'", HvNAME(class_stash));
0 0 SRL_RDR_ERRORf1(dec->pbuf, "No THAW method defined for class '%s'", HvNAME(class_stash));
0 0 SRL_RDR_ERRORf1(dec->pbuf, "No THAW method defined for class '%s'", HvNAME(class_stash));
0 0 SRL_RDR_ERRORf1(dec->pbuf, "No THAW method defined for class '%s'", HvNAME(class_stash));
1502 1 0 if (expect_false( !SvROK(into) || SvTYPE(SvRV(into)) != SVt_PVAV ))
0 1 if (expect_false( !SvROK(into) || SvTYPE(SvRV(into)) != SVt_PVAV ))
0 1 if (expect_false( !SvROK(into) || SvTYPE(SvRV(into)) != SVt_PVAV ))
1514 0 1 PUSHMARK(SP);
1516 0 1 EXTEND(SP, 3);
1522 1 1 for (count=0 ; count < arg_av_len; count++) {
1531 1 0 if (expect_true( count == 1 )) {
1540 1 0 FREETMPS;
1549 1 0 if (SvROK(replacement)) {
1557 0 1 if (*fixup_pos & SRL_HDR_TRACK_FLAG)
1559 0 0 } else if (*fixup_pos & SRL_HDR_TRACK_FLAG) {
1582 0 17184 SRL_RDR_ASSERT_SPACE(dec->pbuf, 1, " while reading regexp modifer tag");
1586 17184 0 if ( expect_true( IS_SRL_HDR_SHORT_BINARY(*dec->buf.pos) ) ) {
1589 0 17184 SRL_RDR_ASSERT_SPACE(dec->pbuf, mod_len, " while reading regexp modifiers");
1590 5733 17184 while (mod_len > 0) {
1692 0 19800 if (expect_false( dec->save_pos )) {
1695 0 19800 if (expect_false( (IV)item > dec->buf.end - dec->buf.start )) {
1726 0 4365217 if (expect_false( SRL_RDR_DONE(dec->pbuf) ))
1741 608933 0 SRL_RDR_ASSERT_SPACE(dec->pbuf, len, " while reading ascii string");
0 608933 SRL_RDR_ASSERT_SPACE(dec->pbuf, len, " while reading ascii string");
0 608933 SRL_RDR_ASSERT_SPACE(dec->pbuf, len, " while reading ascii string");
1760 42882 9128 if (container && SRL_DEC_HAVE_OPTION(dec,SRL_F_DECODER_USE_UNDEF)){
0 42882 if (container && SRL_DEC_HAVE_OPTION(dec,SRL_F_DECODER_USE_UNDEF)){
1763 0 0 if ( track_it )
1790 0 96686 if (!container)
1800 0 96685 if (track_it)
1806 3 0 while (SRL_RDR_NOT_DONE(dec->pbuf) && *dec->buf.pos == SRL_HDR_PAD)
0 3 while (SRL_RDR_NOT_DONE(dec->pbuf) && *dec->buf.pos == SRL_HDR_PAD)
1811 225330 2 if (tag & SRL_HDR_TRACK_FLAG) {
1825 317166 3950343 if ( expect_false(dec->flags_readonly) )
1827 35 317131 if (
1828 17 18 dec->flags_readonly == 1 || !is_ref
1830 135154 181994 if (is_ref && !SvREADONLY(SvRV(into)) ) {
62592 72562 if (is_ref && !SvREADONLY(SvRV(into)) ) {
1833 315253 1895 if (!SvREADONLY(into)) {