Skip to content

Commit ba3a08c

Browse files
Eric Wonggitster
authored andcommitted
fsck: fix leak when traversing trees
While fsck_walk/fsck_walk_tree/parse_tree populates "struct tree" idempotently, it is still up to the fsck_walk caller to call free_tree_buffer. Fixes: ad2db40 ("fsck: remove redundant parse_tree() invocation") Signed-off-by: Eric Wong <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 78e7b98 commit ba3a08c

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

builtin/fsck.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,13 @@ static void mark_object_reachable(struct object *obj)
170170

171171
static int traverse_one_object(struct object *obj)
172172
{
173-
return fsck_walk(obj, obj, &fsck_walk_options);
173+
int result = fsck_walk(obj, obj, &fsck_walk_options);
174+
175+
if (obj->type == OBJ_TREE) {
176+
struct tree *tree = (struct tree *)obj;
177+
free_tree_buffer(tree);
178+
}
179+
return result;
174180
}
175181

176182
static int traverse_reachable(void)

0 commit comments

Comments
 (0)