On Tue, Oct 25, 2016 at 11:58 AM, Duy Nguyen <pclouds@xxxxxxxxx> wrote: > On Sun, Oct 23, 2016 at 4:26 PM, Christian Couder > <christian.couder@xxxxxxxxx> wrote: >> +void remove_split_index(struct index_state *istate) >> +{ >> + if (istate->split_index) { >> + /* >> + * can't discard_split_index(&the_index); because that >> + * will destroy split_index->base->cache[], which may >> + * be shared with the_index.cache[]. So yeah we're >> + * leaking a bit here. > > In the context of update-index, this is a one-time thing and leaking > is tolerable. But because it becomes a library function now, this leak > can become more serious, I think. > > The only other (indirect) caller is read_index_from() so probably not > bad most of the time (we read at the beginning of a command only). > sequencer.c may discard and re-read the index many times though, > leaking could be visible there. So is it enough to check if split_index->base->cache[] is shared with the_index.cache[] and then decide if discard_split_index(&the_index) should be called? Thanks, Christian.