Skip to content
  • Karsten Blees's avatar
    read-cache.c: fix memory leaks caused by removed cache entries · 5699d17e
    Karsten Blees authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    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: default avatarKarsten Blees <blees@dcon.de>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    5699d17e