Must not modify the_index.cache as it may be passed to realloc at some point.
authorKeith Packard <keithp@keithp.com>
Wed, 3 Oct 2007 05:44:15 +0000 (22:44 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 3 Oct 2007 06:18:58 +0000 (23:18 -0700)
commit95af39fcb2d84c8ef2844a9d890e3c67a2e0e1ec
treea75ca427b6832c01aded76499c4fb203a7619da5
parent96e24abc9f14c83abd1e269e1d5bc1c9e50d3fca
Must not modify the_index.cache as it may be passed to realloc at some point.

The index cache is not static, growing as new entries are added. If
entries are added after prune_cache is called, cache will no longer
point at the base of the allocation, and realloc will not be happy.

I verified that this was the only place in the current source which
modified any index_state.cache elements aside from the alloc/realloc
calls in read-cache by changing the type of the element to 'struct
cache_entry ** const cache' and recompiling.

A more efficient patch would create a separate 'cache_base' value to
track the allocation and then fix things up when reallocation was
necessary, instead of the brute-force memmove used here.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-ls-files.c