Skip to content

Commit

Permalink
object_as_type: set commit index
Browse files Browse the repository at this point in the history
The point of the "index" field of struct commit is that
every allocated commit would have one. It is supposed to be
an invariant that whenever object->type is set to
OBJ_COMMIT, we have a unique index.

Commit 969eba6 (commit: push commit_index update into
alloc_commit_node, 2014-06-10) covered this case for
newly-allocated commits. However, we may also allocate an
"unknown" object via lookup_unknown_object, and only later
convert it to a commit. We must make sure that we set the
commit index when we switch the type field.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Jul 28, 2014
1 parent 5de7f50 commit 34dfe19
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions object.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,8 @@ void *object_as_type(struct object *obj, enum object_type type, int quiet)
if (obj->type == type)
return obj;
else if (obj->type == OBJ_NONE) {
if (type == OBJ_COMMIT)
((struct commit *)obj)->index = alloc_commit_index();
obj->type = type;
return obj;
}
Expand Down

0 comments on commit 34dfe19

Please sign in to comment.