Skip to content

Commit ee6f058

Browse files
jonathantanmygitster
authored andcommitted
index-pack: make resolve_delta() assume base data
A subsequent commit will make the quantum of work smaller, necessitating more locking. This commit allows resolve_delta() to be called outside the lock. Signed-off-by: Jonathan Tan <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent b4718ca commit ee6f058

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

builtin/index-pack.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -927,7 +927,7 @@ static struct base_data *make_base(struct object_entry *obj,
927927
static struct base_data *resolve_delta(struct object_entry *delta_obj,
928928
struct base_data *base)
929929
{
930-
void *base_data, *delta_data, *result_data;
930+
void *delta_data, *result_data;
931931
struct base_data *result;
932932
unsigned long result_size;
933933

@@ -942,8 +942,8 @@ static struct base_data *resolve_delta(struct object_entry *delta_obj,
942942
obj_stat[i].base_object_no = j;
943943
}
944944
delta_data = get_data_from_pack(delta_obj);
945-
base_data = get_base_data(base);
946-
result_data = patch_delta(base_data, base->size,
945+
assert(base->data);
946+
result_data = patch_delta(base->data, base->size,
947947
delta_data, delta_obj->size, &result_size);
948948
free(delta_data);
949949
if (!result_data)
@@ -1003,6 +1003,7 @@ static struct base_data *find_unresolved_deltas_1(struct base_data *base,
10031003
(uintmax_t)child->idx.offset,
10041004
oid_to_hex(&base->obj->idx.oid));
10051005

1006+
get_base_data(base);
10061007
result = resolve_delta(child, base);
10071008
if (base->ref_first == base->ref_last && base->ofs_last == -1)
10081009
free_base_data(base);
@@ -1017,6 +1018,7 @@ static struct base_data *find_unresolved_deltas_1(struct base_data *base,
10171018

10181019
assert(child->real_type == OBJ_OFS_DELTA);
10191020
child->real_type = base->obj->real_type;
1021+
get_base_data(base);
10201022
result = resolve_delta(child, base);
10211023
if (base->ofs_first == base->ofs_last)
10221024
free_base_data(base);

0 commit comments

Comments
 (0)