| line |
true |
false |
branch |
|
63
|
6 |
26324 |
DEC_NEED(1); |
|
66
|
26292 |
32 |
if (!(b & 0x80)) break; |
|
68
|
0 |
32 |
if (shift >= 64) croak("decode: varint exceeds 64 bits"); |
|
77
|
22 |
24391 |
DEC_NEED(len); |
|
101
|
0 |
230 |
if (!SvOK(bytes)) croak("%s: bytes argument is undef", fname); |
|
104
|
1 |
229 |
if (start_offset > buf_len) |
|
119
|
1 |
225 |
if (ncols > (UV)(end - p)) |
|
123
|
0 |
225 |
if (nrows > remaining_after_headers && nrows > 0) |
|
|
0 |
0 |
if (nrows > remaining_after_headers && nrows > 0) |
|
158
|
661 |
646 |
if (kind < 0 || kind == JV_STRING) { |
|
|
86 |
575 |
if (kind < 0 || kind == JV_STRING) { |
|
160
|
90 |
732 |
for (k = 0; k < nv_rows; k++) { |
|
167
|
128 |
447 |
if (kind == JV_INT64) { |
|
170
|
0 |
128 |
if ((UV)nv_rows > (UV)(end - *p) / 8) |
|
173
|
132 |
128 |
for (k = 0; k < nv_rows; k++) { |
|
180
|
69 |
378 |
if (kind == JV_FLOAT64) { |
|
181
|
0 |
69 |
if ((UV)nv_rows > (UV)(end - *p) / 8) |
|
184
|
69 |
69 |
for (k = 0; k < nv_rows; k++) { |
|
191
|
88 |
290 |
if (kind == JV_BOOL) { |
|
192
|
0 |
88 |
if ((UV)nv_rows > (UV)(end - *p)) |
|
195
|
90 |
88 |
for (k = 0; k < nv_rows; k++) { |
|
201
|
232 |
58 |
if (kind == JV_ARRAY_BOOL || kind == JV_ARRAY_FLOAT64 |
|
|
171 |
61 |
if (kind == JV_ARRAY_BOOL || kind == JV_ARRAY_FLOAT64 |
|
202
|
53 |
118 |
|| kind == JV_ARRAY_INT64 || kind == JV_ARRAY_STRING) { |
|
|
53 |
0 |
|| kind == JV_ARRAY_INT64 || kind == JV_ARRAY_STRING) { |
|
205
|
0 |
290 |
if (nv_rows == 0) return; |
|
206
|
0 |
290 |
if ((UV)nv_rows > (UV)(end - *p) / 8) |
|
210
|
0 |
290 |
Newx(offs, nv_rows, uint64_t); |
|
213
|
291 |
290 |
for (k = 0; k < nv_rows; k++) { |
|
217
|
291 |
0 |
if (offs[k] > (uint64_t)SSize_t_MAX || offs[k] < prev_o) |
|
|
0 |
291 |
if (offs[k] > (uint64_t)SSize_t_MAX || offs[k] < prev_o) |
|
227
|
0 |
290 |
if (total > (uint64_t)(end - *p)) |
|
231
|
291 |
290 |
for (k = 0; k < nv_rows; k++) |
|
239
|
234 |
56 |
if (offs[0] > 0) av_extend(inner, (SSize_t)offs[0] - 1); |
|
242
|
58 |
232 |
STRLEN per_elem = (kind == JV_ARRAY_BOOL) ? 1 : 8; |
|
245
|
237 |
53 |
if (kind != JV_ARRAY_STRING |
|
246
|
0 |
237 |
&& total > (uint64_t)(end - *p) / per_elem) |
|
251
|
604 |
290 |
for (i = 0; i < total; i++) { |
|
252
|
1 |
604 |
while (inner_cursor >= (SSize_t)(offs[row_idx] - prev)) { |
|
259
|
0 |
1 |
if (row_idx >= nv_rows) |
|
265
|
1 |
0 |
if (n2 > 0) av_extend(inner, (SSize_t)n2 - 1); |
|
312
|
1403 |
13 |
if (nrows > 0) av_extend(av, nrows - 1); |
|
317
|
0 |
4 |
DEC_NEED((STRLEN)nrows); |
|
318
|
6 |
4 |
DEC_SCALAR_LOOP(av, nrows, newSViv((IV)(int8_t)*(*p)++)); |
|
322
|
0 |
205 |
DEC_NEED((STRLEN)nrows); |
|
323
|
20008 |
205 |
DEC_SCALAR_LOOP(av, nrows, newSVuv((UV)*(*p)++)); |
|
327
|
0 |
3 |
DEC_NEED((STRLEN)(2 * nrows)); |
|
328
|
3 |
3 |
for (r = 0; r < nrows; r++) { |
|
342
|
0 |
7 |
DEC_NEED((STRLEN)(2 * nrows)); |
|
343
|
12 |
7 |
for (r = 0; r < nrows; r++) { |
|
351
|
4 |
289 |
DEC_NEED((STRLEN)(4 * nrows)); |
|
352
|
20163 |
289 |
for (r = 0; r < nrows; r++) { |
|
361
|
1 |
235 |
DEC_NEED((STRLEN)(4 * nrows)); |
|
362
|
20062 |
235 |
for (r = 0; r < nrows; r++) { |
|
370
|
0 |
13 |
DEC_NEED((STRLEN)(8 * nrows)); |
|
371
|
22 |
13 |
for (r = 0; r < nrows; r++) { |
|
380
|
0 |
11 |
DEC_NEED((STRLEN)(8 * nrows)); |
|
381
|
22 |
11 |
for (r = 0; r < nrows; r++) { |
|
389
|
0 |
1 |
DEC_NEED((STRLEN)(4 * nrows)); |
|
390
|
2 |
1 |
for (r = 0; r < nrows; r++) { |
|
399
|
0 |
206 |
DEC_NEED((STRLEN)(8 * nrows)); |
|
400
|
20007 |
206 |
for (r = 0; r < nrows; r++) { |
|
410
|
0 |
1 |
DEC_NEED((STRLEN)(2 * nrows)); |
|
411
|
2 |
1 |
for (r = 0; r < nrows; r++) { |
|
421
|
20183 |
285 |
for (r = 0; r < nrows; r++) { |
|
434
|
5 |
0 |
if (n > 0 && (UV)nrows > ((UV)(end - *p)) / n) |
|
|
0 |
5 |
if (n > 0 && (UV)nrows > ((UV)(end - *p)) / n) |
|
439
|
0 |
5 |
DEC_NEED(n * (STRLEN)nrows); |
|
440
|
9 |
5 |
for (r = 0; r < nrows; r++) { |
|
449
|
0 |
3 |
if ((UV)nrows > (UV)(end - *p) / 16) |
|
452
|
0 |
3 |
DEC_NEED((STRLEN)(16 * nrows)); |
|
453
|
8 |
3 |
for (r = 0; r < nrows; r++) { |
|
467
|
0 |
2 |
if ((UV)nrows > (UV)(end - *p) / 32) |
|
470
|
0 |
2 |
DEC_NEED((STRLEN)(32 * nrows)); |
|
471
|
5 |
2 |
for (r = 0; r < nrows; r++) { |
|
475
|
20 |
5 |
for (i = 0; i < 4; i++) { |
|
487
|
0 |
4 |
if ((UV)nrows > (UV)(end - *p) / 16) |
|
490
|
0 |
4 |
DEC_NEED((STRLEN)(16 * nrows)); |
|
491
|
6 |
4 |
for (r = 0; r < nrows; r++) { |
|
494
|
48 |
6 |
for (i = 0; i < 8; i++) b[i] = (*p)[7 - i]; |
|
495
|
48 |
6 |
for (i = 0; i < 8; i++) b[8+i] = (*p)[15 - i]; |
|
500
|
96 |
6 |
for (k = 0; k < 16; k++) { |
|
503
|
90 |
6 |
if (k == 3 || k == 5 || k == 7 || k == 9) hex[j++] = '-'; |
|
|
84 |
6 |
if (k == 3 || k == 5 || k == 7 || k == 9) hex[j++] = '-'; |
|
|
78 |
6 |
if (k == 3 || k == 5 || k == 7 || k == 9) hex[j++] = '-'; |
|
|
6 |
72 |
if (k == 3 || k == 5 || k == 7 || k == 9) hex[j++] = '-'; |
|
511
|
0 |
5 |
DEC_NEED((STRLEN)(4 * nrows)); |
|
512
|
6 |
5 |
for (r = 0; r < nrows; r++) { |
|
526
|
0 |
1 |
if ((UV)nrows > (UV)(end - *p) / 16) |
|
529
|
0 |
1 |
DEC_NEED((STRLEN)(16 * nrows)); |
|
530
|
1 |
1 |
for (r = 0; r < nrows; r++) { |
|
539
|
0 |
13 |
if ((UV)nrows > (UV)(end - *p) / 8) |
|
542
|
0 |
13 |
DEC_NEED((STRLEN)(8 * nrows)); |
|
544
|
0 |
13 |
Newx(offsets, nrows + 1, SSize_t); |
|
547
|
32 |
13 |
for (r = 0; r < nrows; r++) { |
|
553
|
32 |
0 |
if (o > (uint64_t)SSize_t_MAX || (SSize_t)o < offsets[r]) |
|
|
0 |
32 |
if (o > (uint64_t)SSize_t_MAX || (SSize_t)o < offsets[r]) |
|
562
|
0 |
13 |
if ((UV)total > (UV)(end - *p)) |
|
568
|
32 |
13 |
for (r = 0; r < nrows; r++) { |
|
571
|
19 |
13 |
if (stop > start) av_extend(slice, stop - start - 1); |
|
573
|
36 |
32 |
for (i = start; i < stop; i++) { |
|
575
|
36 |
0 |
av_store(slice, i - start, |
|
590
|
10 |
5 |
for (i = 0; i < t->tuple_len; i++) |
|
592
|
9 |
5 |
for (r = 0; r < nrows; r++) { |
|
594
|
9 |
0 |
if (t->tuple_len > 0) av_extend(row, t->tuple_len - 1); |
|
595
|
18 |
9 |
for (i = 0; i < t->tuple_len; i++) { |
|
597
|
18 |
0 |
av_store(row, i, elem ? SvREFCNT_inc(*elem) : newSV(0)); |
|
601
|
10 |
5 |
for (i = 0; i < t->tuple_len; i++) SvREFCNT_dec(cols[i]); |
|
605
|
0 |
13 |
DEC_NEED((STRLEN)nrows); |
|
609
|
26 |
13 |
for (r = 0; r < nrows; r++) nulls[r] = *(*p)++; |
|
612
|
26 |
13 |
for (r = 0; r < nrows; r++) { |
|
613
|
12 |
14 |
if (nulls[r]) { |
|
617
|
14 |
0 |
av_store(av, r, elem ? SvREFCNT_inc(*elem) : newSV(0)); |
|
639
|
0 |
5 |
DEC_NEED(24); |
|
644
|
0 |
5 |
if (version != 1) croak("decode: LowCardinality version != 1 (got %lu)", (unsigned long)version); |
|
646
|
0 |
5 |
if (dict_n > (uint64_t)(end - *p)) |
|
653
|
0 |
5 |
if (idx_type > 3) |
|
658
|
2 |
3 |
TypeInfo *leaf = is_null ? inner->inner : inner; |
|
661
|
0 |
5 |
DEC_NEED(8); |
|
666
|
5 |
0 |
if (idx_n > (uint64_t)SSize_t_MAX || (SSize_t)idx_n != nrows) |
|
|
0 |
5 |
if (idx_n > (uint64_t)SSize_t_MAX || (SSize_t)idx_n != nrows) |
|
669
|
0 |
5 |
size_t idx_bytes = (idx_type == 0) ? 1 : |
|
|
0 |
0 |
size_t idx_bytes = (idx_type == 0) ? 1 : |
|
|
0 |
0 |
size_t idx_bytes = (idx_type == 0) ? 1 : |
|
672
|
0 |
5 |
DEC_NEED((STRLEN)(idx_bytes * idx_n)); |
|
673
|
15 |
5 |
for (r = 0; r < nrows; r++) { |
|
682
|
7 |
8 |
if (is_null && i == 0) { |
|
|
2 |
5 |
if (is_null && i == 0) { |
|
685
|
0 |
13 |
if (i >= dict_n) |
|
690
|
13 |
0 |
av_store(av, r, elem ? SvREFCNT_inc(*elem) : newSV(0)); |
|
697
|
0 |
5 |
DEC_NEED(8); |
|
700
|
0 |
5 |
if (mode != 0) croak("decode: Variant mode != 0 (got %lu)", (unsigned long)mode); |
|
701
|
0 |
5 |
DEC_NEED((STRLEN)nrows); |
|
705
|
12 |
5 |
for (r = 0; r < nrows; r++) wire_disc[r] = *(*p)++; |
|
710
|
12 |
5 |
for (r = 0; r < nrows; r++) { |
|
712
|
4 |
8 |
if (w != 255) { |
|
713
|
0 |
4 |
if (w >= nvar) croak("decode: Variant wire idx %u out of range", w); |
|
723
|
10 |
5 |
for (w = 0; w < nvar; w++) { |
|
730
|
12 |
5 |
for (r = 0; r < nrows; r++) { |
|
732
|
8 |
4 |
if (wd == 255) { |
|
740
|
4 |
0 |
av_store(pair, 1, elem ? SvREFCNT_inc(*elem) : newSV(0)); |
|
744
|
10 |
5 |
for (w = 0; w < nvar; w++) SvREFCNT_dec(subcols[w]); |
|
750
|
0 |
67 |
DEC_NEED(8); |
|
752
|
0 |
67 |
if (obj_ver != 0 && obj_ver != 2 && obj_ver != 4) |
|
|
0 |
0 |
if (obj_ver != 0 && obj_ver != 2 && obj_ver != 4) |
|
|
0 |
0 |
if (obj_ver != 0 && obj_ver != 2 && obj_ver != 4) |
|
756
|
67 |
0 |
if (obj_ver == 0) { |
|
764
|
0 |
67 |
if (num_paths > (UV)(end - *p)) |
|
771
|
53 |
14 |
if (num_paths > 0) { |
|
772
|
0 |
53 |
Newx(paths, num_paths, char*); |
|
774
|
0 |
53 |
Newx(path_lens, num_paths, STRLEN); |
|
778
|
642 |
66 |
for (pi = 0; pi < num_paths; pi++) { |
|
785
|
0 |
66 |
if (obj_ver == 4) { |
|
791
|
0 |
0 |
if (shared_ver == 1 || shared_ver == 2) |
|
|
0 |
0 |
if (shared_ver == 1 || shared_ver == 2) |
|
798
|
52 |
14 |
if (num_paths > 0) { |
|
799
|
0 |
52 |
Newxz(path_kind_list, num_paths, int*); |
|
801
|
0 |
52 |
Newxz(path_kind_count, num_paths, int); |
|
804
|
641 |
66 |
for (pi = 0; pi < num_paths; pi++) { |
|
805
|
0 |
641 |
DEC_NEED(8); |
|
807
|
0 |
641 |
if (dyn_ver != 1 && dyn_ver != 2 && dyn_ver != 4) |
|
|
0 |
0 |
if (dyn_ver != 1 && dyn_ver != 2 && dyn_ver != 4) |
|
|
0 |
0 |
if (dyn_ver != 1 && dyn_ver != 2 && dyn_ver != 4) |
|
811
|
641 |
0 |
if (dyn_ver == 1) |
|
816
|
0 |
641 |
if (ntypes > (UV)(end - *p)) |
|
822
|
641 |
0 |
if (ntypes > 0) { |
|
823
|
0 |
641 |
Newx(kinds_in_order, ntypes, int); |
|
827
|
649 |
641 |
for (ti = 0; ti < ntypes; ti++) { |
|
832
|
0 |
649 |
if (k < 0) |
|
843
|
0 |
641 |
DEC_NEED(8); |
|
845
|
0 |
641 |
if (var_mode != 0) |
|
851
|
304 |
66 |
for (r = 0; r < nrows; r++) |
|
861
|
19 |
66 |
for (tp = 0; tp < t->tuple_len; tp++) { |
|
866
|
35 |
19 |
for (r = 0; r < nrows; r++) { |
|
868
|
0 |
35 |
if (!e) continue; |
|
879
|
641 |
66 |
for (pi = 0; pi < num_paths; pi++) { |
|
881
|
0 |
641 |
DEC_NEED((STRLEN)nrows); |
|
885
|
7538 |
641 |
for (r = 0; r < nrows; r++) discs[r] = *(*p)++; |
|
902
|
649 |
641 |
for (i = 0; i < nv; i++) |
|
907
|
7538 |
641 |
for (r = 0; r < nrows; r++) { |
|
909
|
6878 |
660 |
if (d == 0xff) continue; |
|
910
|
0 |
660 |
if (d >= wire_slots) |
|
924
|
1290 |
641 |
for (slot = 0; slot < wire_slots; slot++) { |
|
929
|
649 |
641 |
if (nv_rows > 0) av_extend(sub, nv_rows - 1); |
|
938
|
7538 |
641 |
for (r = 0; r < nrows; r++) { |
|
940
|
6878 |
660 |
if (d == 0xff) continue; |
|
942
|
0 |
660 |
if (!e) continue; |
|
955
|
64 |
2 |
if (nrows > 0) { |
|
956
|
0 |
64 |
DEC_NEED((STRLEN)(8 * nrows)); |
|
960
|
0 |
66 |
if (last_offset > 0) { |
|
965
|
0 |
0 |
if (last_offset > (uint64_t)(end - *p)) |
|
971
|
0 |
0 |
for (i = 0; i < last_offset; i++) { |
|
975
|
0 |
0 |
for (i = 0; i < last_offset; i++) { |
|
986
|
304 |
66 |
for (r = 0; r < nrows; r++) { |
|
993
|
695 |
304 |
while ((he = hv_iternext(row_hv))) { |
|
996
|
242 |
453 |
if (memchr(kstr, '.', klen)) |
|
1001
|
242 |
304 |
for (ki = 0; ki < nk; ki++) { |
|
1009
|
2619 |
242 |
for (off = 0; off <= klen; off++) { |
|
1010
|
2377 |
242 |
if (off == klen || kstr[off] == '.') { |
|
|
321 |
2056 |
if (off == klen || kstr[off] == '.') { |
|
1013
|
242 |
321 |
if (off == klen) { |
|
1017
|
0 |
242 |
if (!leaf) { conflict = 1; break; } |
|
1019
|
0 |
242 |
if (!hv_store(cur, seg, (I32)slen, |
|
1028
|
176 |
145 |
if (next && SvROK(*next) |
|
|
176 |
0 |
if (next && SvROK(*next) |
|
1029
|
176 |
0 |
&& SvTYPE(SvRV(*next)) == SVt_PVHV) { |
|
1031
|
0 |
145 |
} else if (next) { |
|
1044
|
242 |
0 |
if (!conflict) |
|
1053
|
0 |
5 |
DEC_NEED(8); |
|
1055
|
0 |
5 |
if (dyn_ver != 1 && dyn_ver != 2 && dyn_ver != 4) |
|
|
0 |
0 |
if (dyn_ver != 1 && dyn_ver != 2 && dyn_ver != 4) |
|
|
0 |
0 |
if (dyn_ver != 1 && dyn_ver != 2 && dyn_ver != 4) |
|
1059
|
5 |
0 |
if (dyn_ver == 1) |
|
1064
|
0 |
5 |
if (ntypes > (UV)(end - *p)) |
|
1070
|
4 |
1 |
if (ntypes > 0) { |
|
1071
|
0 |
4 |
Newx(kinds_in_order, ntypes, int); |
|
1075
|
12 |
5 |
for (ti = 0; ti < ntypes; ti++) { |
|
1079
|
0 |
12 |
if (k < 0) |
|
1087
|
0 |
5 |
DEC_NEED(8); |
|
1089
|
0 |
5 |
if (var_mode != 0) |
|
1097
|
12 |
5 |
for (i = 0; i < nv; i++) mask |= 1u << kinds_in_order[i]; |
|
1102
|
0 |
5 |
DEC_NEED((STRLEN)nrows); |
|
1106
|
17 |
5 |
for (r = 0; r < nrows; r++) discs[r] = *(*p)++; |
|
1111
|
17 |
5 |
for (r = 0; r < nrows; r++) { |
|
1112
|
5 |
12 |
if (discs[r] == 0xff) continue; |
|
1113
|
0 |
12 |
if (discs[r] >= wire_slots) |
|
1123
|
17 |
5 |
for (slot = 0; slot < wire_slots; slot++) { |
|
1128
|
12 |
5 |
if (nv_rows > 0) av_extend(sub, nv_rows - 1); |
|
1136
|
17 |
5 |
for (r = 0; r < nrows; r++) { |
|
1138
|
5 |
12 |
if (d == 0xff) { av_store(av, r, newSV(0)); continue; } |
|
1140
|
12 |
0 |
av_store(av, r, e ? SvREFCNT_inc(*e) : newSV(0)); |