read-cache: fix memory leak in do_write_index
The previous_name_buf was never getting released when there was an error in ce_write_entry or allow was false and execution was returned to the caller. Signed-off-by: Kevin Willford <kewillf@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3921a0b3c3
commit
b50386c7c0
12
read-cache.c
12
read-cache.c
@ -2192,7 +2192,7 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
|
||||
int newfd = tempfile->fd;
|
||||
git_SHA_CTX c;
|
||||
struct cache_header hdr;
|
||||
int i, err, removed, extended, hdr_version;
|
||||
int i, err = 0, removed, extended, hdr_version;
|
||||
struct cache_entry **cache = istate->cache;
|
||||
int entries = istate->cache_nr;
|
||||
struct stat st;
|
||||
@ -2247,15 +2247,21 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
|
||||
if (allow)
|
||||
warning(msg, ce->name);
|
||||
else
|
||||
return error(msg, ce->name);
|
||||
err = error(msg, ce->name);
|
||||
|
||||
drop_cache_tree = 1;
|
||||
}
|
||||
if (ce_write_entry(&c, newfd, ce, previous_name) < 0)
|
||||
return -1;
|
||||
err = -1;
|
||||
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
strbuf_release(&previous_name_buf);
|
||||
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* Write extension data here */
|
||||
if (!strip_extensions && istate->split_index) {
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
|
Loading…
Reference in New Issue
Block a user