From 2adc0edd4c2385543c90cc94e8925a86f0b90f24 Mon Sep 17 00:00:00 2001 From: llsth Date: Sat, 11 Apr 2015 23:52:57 +0200 Subject: [PATCH] Fixed wrong memory management with new --- lib/clib/mem.c | 23 ----------------------- lib/platform.h | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/lib/clib/mem.c b/lib/clib/mem.c index 76e247eb..a00abea3 100644 --- a/lib/clib/mem.c +++ b/lib/clib/mem.c @@ -43,29 +43,6 @@ #define Debug(x,y,z,w) #endif -#ifdef __cplusplus -#if (__GNUC__ > 2) -#include -void* operator new (size_t size) throw(std::bad_alloc) { - return AllocMemSafe(size); -} - -void* operator new[] (size_t size) throw(std::bad_alloc) { - return AllocMemSafe(size); -} - -void operator delete (void* ptr) throw() { - FreeMemSafe(ptr); -} - -void operator delete[] (void* ptr) throw() { - FreeMemSafe(ptr); -} -#else - -#endif -#endif - struct MemoryBlock { struct MemoryBlock *next; diff --git a/lib/platform.h b/lib/platform.h index 1ff94bfe..bb30282b 100644 --- a/lib/platform.h +++ b/lib/platform.h @@ -148,6 +148,28 @@ inline void operator delete[] (void* ptr) { #endif #endif + +#ifdef __cplusplus +#if (__GNUC__ > 2) +#include +inline void* operator new (size_t size) throw(std::bad_alloc) { + return AllocMemSafe(size); +} + +inline void* operator new[] (size_t size) throw(std::bad_alloc) { + return AllocMemSafe(size); +} + +inline void operator delete (void* ptr) throw() { + FreeMemSafe(ptr); +} + +inline void operator delete[] (void* ptr) throw() { + FreeMemSafe(ptr); +} +#endif +#endif + #if defined(ANSICONSOLE) #define HEADLINE "\x1B[1m" #ifdef UNIX