]> git.ipfire.org Git - thirdparty/git.git/commit
decorate: add clear_decoration() function
authorJeff King <peff@peff.net>
Thu, 5 Oct 2023 21:29:02 +0000 (17:29 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 5 Oct 2023 21:54:55 +0000 (14:54 -0700)
commit771868243cf0b6f7edcec6e672d20faa4e9b50be
treebec824f8f75cc9d1bfc933a06b452fb316b30820
parent43c8a30d150ecede9709c1f2527c8fba92c65f40
decorate: add clear_decoration() function

There's not currently any way to free the resources associated with a
decoration struct. As a result, we have several memory leaks which
cannot easily be plugged.

Let's add a "clear" function and make use of it in the example code of
t9004. This removes the only leak from that script, so we can mark it as
passing the leak sanitizer.

Curiously this leak is found only when running SANITIZE=leak with clang,
but not with gcc.  But it is a bog-standard leak: we allocate some
memory in a local variable struct, and then exit main() without
releasing it. I'm not sure why gcc doesn't find it. After this
patch, both compilers report it as leak-free.

Note that the clear function takes a callback to free the individual
entries. That's not needed for our example (which is just decorating
with ints), but will be for real callers.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
decorate.c
decorate.h
t/helper/test-example-decorate.c
t/t9004-example.sh