Browse Source

fsck: remove redundant parse_tree() invocation

If obj->type == OBJ_TREE, an invocation of fsck_walk() will invoke
parse_tree() and return quickly if that returns nonzero, so it is of no
use for traverse_one_object() to invoke parse_tree() in this situation
before invoking fsck_walk(). Remove that code.

The behavior of traverse_one_object() is changed slightly in that it now
returns -1 instead of 1 in the case that parse_tree() fails, but this is
not an issue because its only caller (traverse_reachable) does not care
about the value as long as it is nonzero.

This code was introduced in commit 271b8d2 ("builtin-fsck: move away
from object-refs to fsck_walk", 2008-02-25). The same issue existed in
that commit.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Jonathan Tan 8 years ago committed by Junio C Hamano
parent
commit
ad2db4030e
  1. 13
      builtin/fsck.c

13
builtin/fsck.c

@ -168,18 +168,7 @@ static void mark_object_reachable(struct object *obj) @@ -168,18 +168,7 @@ static void mark_object_reachable(struct object *obj)

static int traverse_one_object(struct object *obj)
{
int result;
struct tree *tree = NULL;

if (obj->type == OBJ_TREE) {
tree = (struct tree *)obj;
if (parse_tree(tree) < 0)
return 1; /* error already displayed */
}
result = fsck_walk(obj, obj, &fsck_walk_options);
if (tree)
free_tree_buffer(tree);
return result;
return fsck_walk(obj, obj, &fsck_walk_options);
}

static int traverse_reachable(void)

Loading…
Cancel
Save