]> git.ipfire.org Git - thirdparty/git.git/commit
alloc: fix dangling pointer in alloc_state cleanup
authorノウラ | Flare <nouraellm@gmail.com>
Thu, 4 Sep 2025 17:44:16 +0000 (17:44 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 4 Sep 2025 22:24:16 +0000 (15:24 -0700)
commit5e2feb5ca692c5c4d39b11e1ffa056911dd7dfd3
treed7e20c6e964472582b3700f8aa3046d702df83a2
parent42bc22449512d0a5ce43155d48ee6adf278adcda
alloc: fix dangling pointer in alloc_state cleanup

All callers of clear_alloc_state() immediately free what they
cleared, so currently it does not hurt anybody that the
alloc_state is left in an unreusable state, but it is an
error-prone API. Replace it with a new function that clears but
in addition frees the structure, as well as NULLing the pointer
that points at it and adjust existing callers.

As it is a moral equivalent of FREE_AND_NULL(), except that what it
frees has internal structure that needs to be cleaned, allow the
helper to be called twice in a row, by making a call with a pointer
to a pointer variable that already is NULLed.

While at it, rename allocate_alloc_state() and name the new
function alloc_state_free_and_null(), to follow more closely the
function naming convention specified in the CodingGuidelines
(namely, functions about S are named with S_ prefix and then
verb).

Signed-off-by: ノウラ | Flare <nouraellm@gmail.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
alloc.c
alloc.h
object.c