read-cache.c: fix memory leaks caused by removed cache entries
commit5699d17ee0949e6c01311a03dcfce485fcdd9b1a
authorKarsten Blees <karsten.blees@gmail.com>
Thu, 14 Nov 2013 19:24:37 +0000 (14 20:24 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 18 Nov 2013 21:04:25 +0000 (18 13:04 -0800)
treef12588558bd275204e058f2f5c7b88e003edea9e
parent6bb69077b74b792ddef66e372c86e66dea8e449b
read-cache.c: fix memory leaks caused by removed cache entries

When cache_entry structs are removed from index_state.cache, they are not
properly freed. Freeing those entries wasn't possible before because we
couldn't remove them from index_state.name_hash.

Now that we _do_ remove the entries from name_hash, we can also free them.
Add 'free(cache_entry)' to all call sites of name-hash.c::remove_name_hash
in read-cache.c (we could free() directly in remove_name_hash(), but
name-hash.c isn't concerned with cache_entry allocation at all).

Accessing a cache_entry after removing it from the index is now no longer
allowed, as the memory has been freed. The following functions need minor
fixes (typically by copying ce->name before use):
 - builtin/rm.c::cmd_rm
 - builtin/update-index.c::do_reupdate
 - read-cache.c::read_index_unmerged
 - resolve-undo.c::unmerge_index_entry_at

Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rm.c
builtin/update-index.c
read-cache.c
resolve-undo.c