[PATCH v2 01/12] load_one_loose_object_map(): fix resource leak
From: Johannes Schindelin via GitGitGadget <hidden>
Date: 2026-07-05 08:24:35
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Johannes Schindelin via GitGitGadget <hidden>
Date: 2026-07-05 08:24:35
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Johannes Schindelin <redacted> Pointed out by Coverity. While at it, reduce near-duplicate clean-up code at the end of the function. Signed-off-by: Johannes Schindelin <redacted> --- loose.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/loose.c b/loose.c
index 0b626c1b85..940a9e0dfe 100644
--- a/loose.c
+++ b/loose.c@@ -65,6 +65,7 @@ static int load_one_loose_object_map(struct repository *repo, struct odb_source_ { struct strbuf buf = STRBUF_INIT, path = STRBUF_INIT; FILE *fp; + int ret = -1; if (!loose->map) loose_object_map_init(&loose->map);
@@ -84,7 +85,6 @@ static int load_one_loose_object_map(struct repository *repo, struct odb_source_ return 0; } - errno = 0; if (strbuf_getwholeline(&buf, fp, '\n') || strcmp(buf.buf, loose_object_header)) goto err; while (!strbuf_getline_lf(&buf, fp)) {
@@ -98,13 +98,12 @@ static int load_one_loose_object_map(struct repository *repo, struct odb_source_ insert_loose_map(loose, &oid, &compat_oid); } - strbuf_release(&buf); - strbuf_release(&path); - return errno ? -1 : 0; + ret = ferror(fp) ? -1 : 0; err: + fclose(fp); strbuf_release(&buf); strbuf_release(&path); - return -1; + return ret; } int repo_read_loose_object_map(struct repository *repo)
--
gitgitgadget