OSDN Git Service

read_branches_file: plug a FILE* leak
authorJohannes Sixt <j6t@kdbg.org>
Fri, 23 Oct 2015 06:02:51 +0000 (08:02 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 23 Oct 2015 17:17:48 +0000 (10:17 -0700)
The earlier rewrite f28e3ab2 (read_branches_file: simplify string handling)
of read_branches_file() lost an fclose() call. Put it back.

As on Windows files that are open cannot be removed, the leak manifests in
a failure of 'git remote rename origin origin' when the remote's URL is
specified in .git/branches/origin, because by the time that the command
attempts to remove this file, it is still open.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
remote.c

index 1101f82..fb16153 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -282,6 +282,7 @@ static void read_branches_file(struct remote *remote)
                return;
 
        strbuf_getline(&buf, f, '\n');
+       fclose(f);
        strbuf_trim(&buf);
        if (!buf.len) {
                strbuf_release(&buf);