From 9dd7f4fb4bf84450f0eb01b6e2d206f8481727fb Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 3 Nov 2020 15:59:23 +0100 Subject: [PATCH] MINOR: debug: don't count free(NULL) in memstats 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/haproxy/bug.h b/include/haproxy/bug.h index ad2018b13..f5ed7f419 100644 --- a/include/haproxy/bug.h +++ b/include/haproxy/bug.h @@ -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); \ })