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>
This commit is contained in:
parent
cac25fc330
commit
ad2db4030e
@ -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…
Reference in New Issue
Block a user