read-cache: fix memleak
authorStefan Beller <sbeller@google.com>
Mon, 23 Mar 2015 17:57:11 +0000 (10:57 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 23 Mar 2015 18:12:59 +0000 (11:12 -0700)
commit915e44c6357f3bd9d5fa498a201872c4367302d3
tree5a266853f74dff3c34666f005719bd34bb423a35
parent067178ed8a7822e6bc88ad606b707fc33658e6fc
read-cache: fix memleak

`ce` is allocated in make_cache_entry and should be freed if it is not
used any more. refresh_cache_entry as a wrapper around refresh_cache_ent
will either return

 - the `ce` given as the parameter, when it was up-to-date;
 - a new updated cache entry which is allocated to new memory; or
 - a NULL when refreshing failed.

In the latter two cases, the original cache-entry `ce` is not used
and needs to be freed.  The rule can be expressed as "if the return
value from refresh is different from the original ce, ce is no
longer used."

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
read-cache.c