| line |
true |
false |
branch |
|
57
|
0 |
2 |
if (!e) |
|
70
|
2 |
0 |
if (e != NULL) { |
|
80
|
8 |
0 |
if (cache->entries) { |
|
81
|
2 |
8 |
git_offmap_foreach_value(cache->entries, entry, { |
|
92
|
0 |
9 |
if (git_offmap_new(&cache->entries) < 0) |
|
97
|
0 |
9 |
if (git_mutex_init(&cache->lock)) { |
|
113
|
0 |
5 |
if (git_mutex_lock(&cache->lock) < 0) |
|
116
|
0 |
5 |
if ((entry = git_offmap_get(cache->entries, offset)) != NULL) { |
|
131
|
0 |
0 |
git_offmap_foreach(cache->entries, offset, entry, { |
|
|
0 |
0 |
git_offmap_foreach(cache->entries, offset, entry, { |
|
|
0 |
0 |
git_offmap_foreach(cache->entries, offset, entry, { |
|
149
|
0 |
2 |
if (base->len > GIT_PACK_CACHE_SIZE_LIMIT) |
|
153
|
2 |
0 |
if (entry) { |
|
154
|
0 |
2 |
if (git_mutex_lock(&cache->lock) < 0) { |
|
161
|
2 |
0 |
if (!exists) { |
|
162
|
0 |
2 |
while (cache->memory_used + base->len > cache->memory_limit) |
|
172
|
0 |
2 |
if (exists) { |
|
189
|
0 |
8 |
if (p->oids) { |
|
193
|
3 |
5 |
if (p->index_map.data) { |
|
210
|
0 |
3 |
if (fd < 0) |
|
213
|
0 |
3 |
if (p_fstat(fd, &st) < 0) { |
|
220
|
0 |
3 |
!git__is_sizet(st.st_size) || |
|
232
|
0 |
3 |
if (error < 0) |
|
237
|
3 |
0 |
if (hdr->idx_signature == htonl(PACK_IDX_SIGNATURE)) { |
|
240
|
3 |
0 |
if (version < 2 || version > 2) { |
|
|
0 |
3 |
if (version < 2 || version > 2) { |
|
251
|
3 |
0 |
if (version > 1) |
|
254
|
768 |
3 |
for (i = 0; i < 256; i++) { |
|
256
|
0 |
768 |
if (n < nr) { |
|
263
|
0 |
3 |
if (version == 1) { |
|
271
|
0 |
0 |
if (idx_size != 4*256 + nr * 24 + 20 + 20) { |
|
275
|
3 |
0 |
} else if (version == 2) { |
|
292
|
3 |
0 |
if (nr) |
|
295
|
3 |
0 |
if (idx_size < min_size || idx_size > max_size) { |
|
|
0 |
3 |
if (idx_size < min_size || idx_size > max_size) { |
|
313
|
3 |
3 |
if (p->index_version > -1) |
|
318
|
0 |
3 |
GIT_ASSERT(name_len > strlen(".pack")); |
|
320
|
0 |
3 |
if ((error = git_str_init(&idx_name, name_len)) < 0) |
|
325
|
0 |
3 |
if (git_str_oom(&idx_name)) { |
|
330
|
3 |
0 |
if (p->index_version == -1) |
|
347
|
0 |
54 |
if (git_mutex_lock(&p->lock) < 0) { |
|
351
|
0 |
54 |
if (git_mutex_lock(&p->mwf.lock) < 0) { |
|
357
|
0 |
54 |
if (p->mwf.fd == -1 && packfile_open_locked(p) < 0) |
|
|
0 |
0 |
if (p->mwf.fd == -1 && packfile_open_locked(p) < 0) |
|
368
|
2 |
52 |
if (offset > (p->mwf.size - 20)) |
|
370
|
0 |
52 |
if (offset < 0) |
|
394
|
53 |
0 |
GIT_ASSERT_ARG(type >= GIT_OBJECT_COMMIT && type <= GIT_OBJECT_REF_DELTA); |
|
|
0 |
53 |
GIT_ASSERT_ARG(type >= GIT_OBJECT_COMMIT && type <= GIT_OBJECT_REF_DELTA); |
|
402
|
45 |
53 |
while (size) { |
|
429
|
43 |
52 |
while (c & 0x80) { |
|
430
|
0 |
43 |
if (len <= used) { |
|
435
|
0 |
43 |
if (bitsizeof(long) <= shift) { |
|
463
|
0 |
52 |
if ((error = git_mutex_lock(&p->lock)) < 0) |
|
465
|
0 |
52 |
if ((error = git_mutex_lock(&p->mwf.lock)) < 0) { |
|
470
|
0 |
52 |
if (p->mwf.fd == -1 && (error = packfile_open_locked(p)) < 0) { |
|
|
0 |
0 |
if (p->mwf.fd == -1 && (error = packfile_open_locked(p)) < 0) { |
|
485
|
0 |
52 |
if (base == NULL) |
|
490
|
0 |
52 |
if (error == GIT_EBUFS) |
|
492
|
0 |
52 |
else if (error < 0) |
|
513
|
0 |
2 |
if (error < 0) { |
|
518
|
0 |
2 |
if (error < 0) { |
|
524
|
0 |
2 |
if (p->mwf.fd == -1 && (error = packfile_open_locked(p)) < 0) { |
|
|
0 |
0 |
if (p->mwf.fd == -1 && (error = packfile_open_locked(p)) < 0) { |
|
533
|
0 |
2 |
if (error < 0) |
|
536
|
2 |
0 |
if (type == GIT_OBJECT_OFS_DELTA || type == GIT_OBJECT_REF_DELTA) { |
|
|
0 |
2 |
if (type == GIT_OBJECT_OFS_DELTA || type == GIT_OBJECT_REF_DELTA) { |
|
543
|
0 |
0 |
if (error < 0) |
|
546
|
0 |
0 |
if ((error = git_packfile_stream_open(&stream, p, curpos)) < 0) |
|
550
|
0 |
0 |
if (error < 0) |
|
557
|
0 |
2 |
while (type == GIT_OBJECT_OFS_DELTA || type == GIT_OBJECT_REF_DELTA) { |
|
|
0 |
2 |
while (type == GIT_OBJECT_OFS_DELTA || type == GIT_OBJECT_REF_DELTA) { |
|
560
|
0 |
0 |
if (error < 0) |
|
562
|
0 |
0 |
if (type != GIT_OBJECT_OFS_DELTA && type != GIT_OBJECT_REF_DELTA) |
|
|
0 |
0 |
if (type != GIT_OBJECT_OFS_DELTA && type != GIT_OBJECT_REF_DELTA) |
|
568
|
0 |
0 |
if (error < 0) |
|
602
|
0 |
5 |
if ((cached = cache_get(&p->bases, obj_offset)) != NULL) { |
|
609
|
0 |
5 |
if (elem_pos == SMALL_STACK_SIZE) { |
|
611
|
0 |
0 |
GIT_ERROR_CHECK_ARRAY(chain); |
|
618
|
5 |
0 |
if (!use_heap) { |
|
621
|
0 |
0 |
elem = git_array_alloc(chain); |
|
|
0 |
0 |
elem = git_array_alloc(chain); |
|
622
|
0 |
0 |
if (!elem) { |
|
631
|
0 |
5 |
if (error < 0) |
|
639
|
5 |
0 |
if (type != GIT_OBJECT_OFS_DELTA && type != GIT_OBJECT_REF_DELTA) |
|
|
3 |
2 |
if (type != GIT_OBJECT_OFS_DELTA && type != GIT_OBJECT_REF_DELTA) |
|
645
|
0 |
2 |
if (error < 0) |
|
682
|
0 |
3 |
if (error < 0) { |
|
687
|
0 |
3 |
if (error < 0) { |
|
693
|
0 |
3 |
if (p->mwf.fd == -1) |
|
697
|
0 |
3 |
if (error < 0) |
|
705
|
0 |
3 |
if (error < 0) |
|
713
|
0 |
3 |
stack = chain.ptr ? chain.ptr : small_stack; |
|
716
|
0 |
3 |
if (cached) { |
|
730
|
3 |
0 |
if (!cached) { |
|
736
|
0 |
3 |
if (error < 0) |
|
754
|
0 |
3 |
if (cached && stack_size == 1) { |
|
|
0 |
0 |
if (cached && stack_size == 1) { |
|
757
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, obj->len, 1); |
|
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, obj->len, 1); |
|
759
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(obj->data); |
|
767
|
2 |
3 |
while (elem_pos > 0 && !error) { |
|
|
2 |
0 |
while (elem_pos > 0 && !error) { |
|
774
|
2 |
0 |
if (!cached) |
|
782
|
0 |
2 |
if (error < 0) { |
|
804
|
0 |
2 |
if (free_base) { |
|
809
|
2 |
0 |
if (cached) { |
|
814
|
0 |
2 |
if (error < 0) |
|
821
|
0 |
3 |
if (error < 0) { |
|
823
|
0 |
0 |
if (cached) |
|
827
|
3 |
0 |
if (elem) |
|
840
|
0 |
45 |
if (git_zstream_init(&obj->zstream, GIT_ZSTREAM_INFLATE) < 0) { |
|
854
|
45 |
47 |
if (obj->done) |
|
857
|
2 |
45 |
if ((in = pack_window_open(obj->p, &obj->mw, obj->curpos, &window_len)) == NULL) |
|
860
|
45 |
0 |
if ((error = git_zstream_set_input(&obj->zstream, in, window_len)) < 0 || |
|
|
0 |
45 |
if ((error = git_zstream_set_input(&obj->zstream, in, window_len)) < 0 || |
|
871
|
45 |
0 |
if (git_zstream_eos(&obj->zstream)) |
|
875
|
0 |
45 |
if (!len && !git_zstream_eos(&obj->zstream)) |
|
|
0 |
0 |
if (!len && !git_zstream_eos(&obj->zstream)) |
|
900
|
0 |
5 |
GIT_ERROR_CHECK_ALLOC_ADD(&buffer_len, size, 1); |
|
|
0 |
5 |
GIT_ERROR_CHECK_ALLOC_ADD(&buffer_len, size, 1); |
|
902
|
0 |
5 |
GIT_ERROR_CHECK_ALLOC(data); |
|
904
|
0 |
5 |
if ((error = git_zstream_init(&zstream, GIT_ZSTREAM_INFLATE)) < 0) { |
|
914
|
0 |
5 |
if ((in = pack_window_open(p, mwindow, *position, &window_len)) == NULL) { |
|
919
|
5 |
0 |
if ((error = git_zstream_set_input(&zstream, in, window_len)) < 0 || |
|
|
0 |
5 |
if ((error = git_zstream_set_input(&zstream, in, window_len)) < 0 || |
|
929
|
0 |
5 |
if (!bytes && !consumed) { |
|
|
0 |
0 |
if (!bytes && !consumed) { |
|
937
|
0 |
5 |
} while (!git_zstream_eos(&zstream)); |
|
939
|
5 |
0 |
if (total != size || !git_zstream_eos(&zstream)) { |
|
|
0 |
5 |
if (total != size || !git_zstream_eos(&zstream)) { |
|
951
|
0 |
5 |
if (error) |
|
974
|
0 |
2 |
GIT_ASSERT_ARG(delta_base_out); |
|
978
|
0 |
2 |
if (base_info == NULL) |
|
986
|
0 |
2 |
if (type == GIT_OBJECT_OFS_DELTA) { |
|
990
|
0 |
0 |
while (c & 128) { |
|
991
|
0 |
0 |
if (left <= used) |
|
994
|
0 |
0 |
if (!unsigned_base_offset || MSB(unsigned_base_offset, 7)) |
|
|
0 |
0 |
if (!unsigned_base_offset || MSB(unsigned_base_offset, 7)) |
|
999
|
0 |
0 |
if (unsigned_base_offset == 0 || (size_t)delta_obj_offset <= unsigned_base_offset) |
|
|
0 |
0 |
if (unsigned_base_offset == 0 || (size_t)delta_obj_offset <= unsigned_base_offset) |
|
1003
|
2 |
0 |
} else if (type == GIT_OBJECT_REF_DELTA) { |
|
1008
|
2 |
0 |
if (p->has_cache) { |
|
1011
|
2 |
0 |
if ((entry = git_oidmap_get(p->idx_cache, &base_oid)) != NULL) { |
|
1012
|
0 |
2 |
if (entry->offset == 0) |
|
1028
|
0 |
0 |
if (pack_entry_find_offset(&base_offset, &unused, p, &base_oid, GIT_OID_HEXSZ) < 0) |
|
1034
|
0 |
0 |
if (base_offset == 0) |
|
1051
|
0 |
8 |
if (!p) |
|
1056
|
0 |
8 |
if (git_mutex_lock(&p->lock) < 0) { |
|
1060
|
3 |
5 |
if (p->mwf.fd >= 0) { |
|
1065
|
8 |
0 |
if (locked) |
|
1068
|
0 |
8 |
if (unlink_packfile) |
|
1089
|
0 |
3 |
if (pack_index_open_locked(p) < 0) |
|
1092
|
0 |
3 |
if (p->mwf.fd >= 0) |
|
1097
|
0 |
3 |
if (p->mwf.fd < 0) |
|
1100
|
0 |
3 |
if (p_fstat(p->mwf.fd, &st) < 0) { |
|
1106
|
0 |
3 |
if (!p->mwf.size) { |
|
1107
|
0 |
0 |
if (!S_ISREG(st.st_mode)) |
|
1110
|
0 |
3 |
} else if (p->mwf.size != st.st_size) |
|
1128
|
3 |
0 |
hdr.hdr_signature != htonl(PACK_SIGNATURE) || |
|
1139
|
0 |
3 |
if (git_oid_raw_cmp(sha1, idx_sha1) != 0) |
|
1142
|
0 |
3 |
if (git_mwindow_file_register(&p->mwf) < 0) |
|
1150
|
0 |
0 |
if (p->mwf.fd >= 0) |
|
1164
|
0 |
4 |
if (path_len < strlen(".idx")) |
|
1167
|
0 |
4 |
if (git_str_printf(&buf, "%.*s.pack", (int)(path_len - strlen(".idx")), path) < 0) |
|
1178
|
9 |
0 |
size_t path_len = path ? strlen(path) : 0, alloc_len; |
|
1182
|
0 |
9 |
if (path_len < strlen(".idx")) |
|
1185
|
0 |
9 |
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, sizeof(*p), path_len); |
|
|
0 |
9 |
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, sizeof(*p), path_len); |
|
1186
|
0 |
9 |
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 2); |
|
|
0 |
9 |
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 2); |
|
1189
|
0 |
9 |
GIT_ERROR_CHECK_ALLOC(p); |
|
1197
|
3 |
6 |
if (git__suffixcmp(path, ".idx") == 0) { |
|
1200
|
3 |
0 |
if (!git_disable_pack_keep_file_checks) { |
|
1202
|
0 |
3 |
if (git_fs_path_exists(p->pack_name) == true) |
|
1209
|
9 |
0 |
if (p_stat(p->pack_name, &st) < 0 || !S_ISREG(st.st_mode)) { |
|
|
0 |
9 |
if (p_stat(p->pack_name, &st) < 0 || !S_ISREG(st.st_mode)) { |
|
1223
|
0 |
9 |
if (git_mutex_init(&p->lock) < 0) { |
|
1229
|
0 |
9 |
if (git_mutex_init(&p->mwf.lock) < 0) { |
|
1236
|
0 |
9 |
if (cache_init(&p->bases) < 0) { |
|
1262
|
0 |
3 |
if (p->index_version == 1) |
|
1267
|
3 |
0 |
if (!(off32 & 0x80000000)) |
|
1272
|
0 |
0 |
if (index >= end - 8) |
|
1294
|
0 |
0 |
if (git_mutex_lock(&p->lock) < 0) |
|
1297
|
0 |
0 |
if ((error = pack_index_open_locked(p)) < 0) { |
|
1302
|
0 |
0 |
if (!p->index_map.data) { |
|
1310
|
0 |
0 |
if (p->index_version > 1) |
|
1315
|
0 |
0 |
if (p->oids == NULL) { |
|
1318
|
0 |
0 |
if ((error = git_vector_init(&oids, p->num_objects, NULL))) { |
|
1323
|
0 |
0 |
if ((error = git_vector_init(&offsets, p->num_objects, git__memcmp4))) { |
|
1328
|
0 |
0 |
if (p->index_version > 1) { |
|
1330
|
0 |
0 |
for (i = 0; i < p->num_objects; i++) |
|
1333
|
0 |
0 |
git_vector_foreach(&offsets, i, current) |
|
1336
|
0 |
0 |
for (i = 0; i < p->num_objects; i++) |
|
1339
|
0 |
0 |
git_vector_foreach(&offsets, i, current) |
|
1353
|
0 |
0 |
if (!oids.ptr) { |
|
1356
|
0 |
0 |
GIT_ERROR_CHECK_ARRAY(oids); |
|
1358
|
0 |
0 |
for (i = 0; i < p->num_objects; i++) { |
|
1359
|
0 |
0 |
oid = git_array_alloc(oids); |
|
|
0 |
0 |
oid = git_array_alloc(oids); |
|
1360
|
0 |
0 |
if (!oid) { |
|
1363
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(oid); |
|
1370
|
0 |
0 |
git_array_foreach(oids, i, oid) { |
|
|
0 |
0 |
git_array_foreach(oids, i, oid) { |
|
1371
|
0 |
0 |
if ((error = cb(oid, data)) != 0) { |
|
1392
|
0 |
0 |
if (git_mutex_lock(&p->lock) < 0) |
|
1396
|
0 |
0 |
if (index == NULL) { |
|
1397
|
0 |
0 |
if ((error = pack_index_open_locked(p)) < 0) |
|
1400
|
0 |
0 |
if (!p->index_map.data) { |
|
1408
|
0 |
0 |
if (p->index_version > 1) |
|
1414
|
0 |
0 |
if (p->index_version > 1) { |
|
1419
|
0 |
0 |
for (i = 0; i < p->num_objects; i++) { |
|
1421
|
0 |
0 |
if (current_offset & 0x80000000) { |
|
1423
|
0 |
0 |
if (large_offset_ptr >= large_offsets_end) { |
|
1432
|
0 |
0 |
if ((error = cb(¤t_oid, current_offset, data)) != 0) { |
|
1438
|
0 |
0 |
for (i = 0; i < p->num_objects; i++) { |
|
1441
|
0 |
0 |
if ((error = cb(¤t_oid, current_offset, data)) != 0) { |
|
1458
|
3 |
0 |
while (lo < hi) { |
|
1462
|
3 |
0 |
if (!cmp) |
|
1465
|
0 |
0 |
if (cmp > 0) |
|
1491
|
0 |
3 |
if (git_mutex_lock(&p->lock) < 0) |
|
1494
|
0 |
3 |
if ((error = pack_index_open_locked(p)) < 0) |
|
1497
|
0 |
3 |
if (!p->index_map.data) { |
|
1505
|
3 |
0 |
if (p->index_version > 1) { |
|
1512
|
3 |
0 |
lo = ((short_oid->id[0] == 0x0) ? 0 : ntohl(level1_ofs[(int)short_oid->id[0] - 1])); |
|
1514
|
3 |
0 |
if (p->index_version > 1) { |
|
1528
|
3 |
0 |
if (pos >= 0) { |
|
1536
|
0 |
0 |
if (pos < (int)p->num_objects) { |
|
1539
|
0 |
0 |
if (!git_oid_raw_ncmp(short_oid->id, current, len)) |
|
1544
|
3 |
0 |
if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)p->num_objects) { |
|
|
0 |
3 |
if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)p->num_objects) { |
|
|
0 |
0 |
if (found && len != GIT_OID_HEXSZ && pos + 1 < (int)p->num_objects) { |
|
1548
|
0 |
0 |
if (!git_oid_raw_ncmp(short_oid->id, next, len)) { |
|
1553
|
0 |
3 |
if (!found) { |
|
1557
|
0 |
3 |
if (found > 1) { |
|
1562
|
0 |
3 |
if ((offset = nth_packed_object_offset_locked(p, pos)) < 0) { |
|
1595
|
0 |
3 |
GIT_ASSERT_ARG(p); |
|
1597
|
3 |
0 |
if (len == GIT_OID_HEXSZ && p->num_bad_objects) { |
|
|
0 |
3 |
if (len == GIT_OID_HEXSZ && p->num_bad_objects) { |
|
1599
|
0 |
0 |
for (i = 0; i < p->num_bad_objects; i++) |
|
1600
|
0 |
0 |
if (git_oid__cmp(short_oid, &p->bad_object_sha1[i]) == 0) |
|
1605
|
0 |
3 |
if (error < 0) |
|
1609
|
0 |
3 |
if (error < 0) { |
|
1614
|
0 |
3 |
if (error < 0) { |
|
1623
|
3 |
0 |
if (p->mwf.fd == -1) |
|
1627
|
0 |
3 |
if (error < 0) |