diff options
author | Jonathan Tan <jonathantanmy@google.com> | 2017-07-18 15:28:48 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-07-20 14:53:51 -0700 |
commit | ad2db4030e42890e569de529e3cd61a8d03de497 (patch) | |
tree | 81f96de43298ae531c17517756ee4a7cfc6f0a90 | |
parent | cac25fc330fc26050dcbc92c4bfff169a4848e93 (diff) | |
download | git-ad2db4030e42890e569de529e3cd61a8d03de497.tar.gz git-ad2db4030e42890e569de529e3cd61a8d03de497.tar.xz |
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>
-rw-r--r-- | builtin/fsck.c | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/builtin/fsck.c b/builtin/fsck.c index 99dea7adf..4ba311cda 100644 --- a/builtin/fsck.c +++ b/builtin/fsck.c @@ -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) |