From 2eae3a0497f01960dd7f4ffc638f11fc36aa5991 Mon Sep 17 00:00:00 2001 From: Hubert Verstraete Date: Tue, 28 Jun 2016 22:41:00 +0200 Subject: [PATCH] MINOR: new function my_realloc2 = realloc + free upon failure When realloc fails to allocate memory, the original pointer is not freed. Sometime people override the original pointer with the pointer returned by realloc which is NULL in case of failure. This results in a memory leak because the memory pointed by the original pointer cannot be freed. --- include/common/standard.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/common/standard.h b/include/common/standard.h index 8711ede28..bf14369e8 100644 --- a/include/common/standard.h +++ b/include/common/standard.h @@ -1093,4 +1093,15 @@ static inline unsigned long long rdtsc() struct list; int list_append_word(struct list *li, const char *str, char **err); +/* same as realloc() except that ptr is also freed upon failure */ +static inline void *my_realloc2(void *ptr, size_t size) +{ + void *ret; + + ret = realloc(ptr, size); + if (!ret && size) + free(ptr); + return ret; +} + #endif /* _COMMON_STANDARD_H */