Merge branch 'sb/plug-leak-in-make-cache-entry' into maint
"update-index --refresh" used to leak when an entry cannot be refreshed for whatever reason. * sb/plug-leak-in-make-cache-entry: read-cache.c: free cache entry when refreshing failsmaint
commit
1e299f5286
10
read-cache.c
10
read-cache.c
|
@ -725,7 +725,7 @@ struct cache_entry *make_cache_entry(unsigned int mode,
|
||||||
unsigned int refresh_options)
|
unsigned int refresh_options)
|
||||||
{
|
{
|
||||||
int size, len;
|
int size, len;
|
||||||
struct cache_entry *ce;
|
struct cache_entry *ce, *ret;
|
||||||
|
|
||||||
if (!verify_path(path)) {
|
if (!verify_path(path)) {
|
||||||
error("Invalid path '%s'", path);
|
error("Invalid path '%s'", path);
|
||||||
|
@ -742,7 +742,13 @@ struct cache_entry *make_cache_entry(unsigned int mode,
|
||||||
ce->ce_namelen = len;
|
ce->ce_namelen = len;
|
||||||
ce->ce_mode = create_ce_mode(mode);
|
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)
|
int ce_same_name(const struct cache_entry *a, const struct cache_entry *b)
|
||||||
|
|
Loading…
Reference in New Issue