]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: debug: don't count free(NULL) in memstats
authorWilly Tarreau <w@1wt.eu>
Tue, 3 Nov 2020 14:59:23 +0000 (15:59 +0100)
committerWilly Tarreau <w@1wt.eu>
Tue, 3 Nov 2020 15:46:48 +0000 (16:46 +0100)
The mem stats are pretty convenient to spot leaks, except that they count
free(NULL) as 1, and the code does actually have quite a number of free(foo)
guards where foo is NULL if the object was already freed. Let's just not
count these ones so that the stats remain consistent. Now it's possible
to compare the strdup()/malloc() and free() and verify they are consistent.

include/haproxy/bug.h

index ad2018b13805d3d54ab09ecdf1fadfbb9afe2386..f5ed7f419acffa476d064bf7d44d2072cadb6f8d 100644 (file)
@@ -124,7 +124,8 @@ struct mem_stats {
        };                                                              \
        __asm__(".globl __start_mem_stats");                            \
        __asm__(".globl __stop_mem_stats");                             \
-       _HA_ATOMIC_ADD(&_.calls, 1);                                    \
+       if (__x)                                                        \
+               _HA_ATOMIC_ADD(&_.calls, 1);                            \
        free(__x);                                                      \
 })