mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
read-cache.c: free cache entry when refreshing fails
This fixes a memory leak when building the cache entries as refresh_cache_entry may decide to return NULL, but it does not free the cache entry structure which was passed in as an argument. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
64a03e970a
commit
bc1c2caa73
10
read-cache.c
10
read-cache.c
@ -701,7 +701,7 @@ struct cache_entry *make_cache_entry(unsigned int mode,
|
||||
unsigned int refresh_options)
|
||||
{
|
||||
int size, len;
|
||||
struct cache_entry *ce;
|
||||
struct cache_entry *ce, *ret;
|
||||
|
||||
if (!verify_path(path)) {
|
||||
error("Invalid path '%s'", path);
|
||||
@ -718,7 +718,13 @@ struct cache_entry *make_cache_entry(unsigned int mode,
|
||||
ce->ce_namelen = len;
|
||||
ce->ce_mode = create_ce_mode(mode);
|
||||
|
||||
return refresh_cache_entry(ce, refresh_options);
|
||||
ret = refresh_cache_entry(ce, refresh_options);
|
||||
if (!ret) {
|
||||
free(ce);
|
||||
return NULL;
|
||||
} else {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
int ce_same_name(const struct cache_entry *a, const struct cache_entry *b)
|
||||
|
Loading…
Reference in New Issue
Block a user