From badad6e71df1c8f9cb2bff190cbbeacd84a8490d Mon Sep 17 00:00:00 2001 From: vemax78 Date: Sun, 11 Aug 2013 22:50:12 +0200 Subject: [PATCH] Implicit out of memory check in Release Mode --- src/common/capwap.h | 6 ++++-- src/common/capwap_debug.c | 6 +++--- src/common/capwap_debug.h | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/common/capwap.h b/src/common/capwap.h index 6352dc8..4b469db 100644 --- a/src/common/capwap.h +++ b/src/common/capwap.h @@ -99,8 +99,10 @@ int capwap_is_timeout(struct timeout_control* timeout, unsigned long index); void capwap_daemon(void); /* */ -#define capwap_outofmemory() capwap_logging_fatal("Out of memory %s(%d)", __FILE__, __LINE__); \ - capwap_exit(CAPWAP_OUT_OF_MEMORY); +#define capwap_outofmemory() do { \ + capwap_logging_fatal("Out of memory %s(%d)", __FILE__, __LINE__); \ + capwap_exit(CAPWAP_OUT_OF_MEMORY); \ + } while(0) /* Helper buffer copy */ char* capwap_duplicate_string(const char* source); diff --git a/src/common/capwap_debug.c b/src/common/capwap_debug.c index 538c032..a114f76 100644 --- a/src/common/capwap_debug.c +++ b/src/common/capwap_debug.c @@ -37,15 +37,15 @@ void* capwap_alloc_debug(size_t size, const char* file, const int line) { if (size <= 0) { capwap_logging_debug("%s(%d): Invalid memory size %d", file, line, size); DEBUG_BREAKPOINT(); - return NULL; + capwap_exit(CAPWAP_ASSERT_CONDITION); } /* Alloc block with memory block and canary */ block = (struct capwap_memory_block*)malloc(sizeof(struct capwap_memory_block) + size + 4); if (!block) { - capwap_logging_debug("Out of memory %s(%d)", __FILE__, __LINE__); + capwap_logging_debug("Out of memory %s(%d)", file, line); DEBUG_BREAKPOINT(); - return NULL; + capwap_exit(CAPWAP_OUT_OF_MEMORY); } /* Info memory block */ diff --git a/src/common/capwap_debug.h b/src/common/capwap_debug.h index e57dd76..a622944 100644 --- a/src/common/capwap_debug.h +++ b/src/common/capwap_debug.h @@ -26,7 +26,7 @@ void capwap_dump_memory(void); #define ASSERT(expr) /* Standard memory management */ -#define capwap_alloc(x) (void*)malloc(x) +#define capwap_alloc(l) ({ void* __x = malloc(l); if (!__x) capwap_outofmemory(); __x; }) #define capwap_free(x) free(x) #define capwap_check_memory_leak(x) (0) #define capwap_dump_memory() (0)