From aaf1bbfd62a0297da30d2ac01f6e30592a3d11e0 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Thu, 2 Dec 2004 12:04:46 +0000 Subject: [PATCH] Fixed memory checking on Unix by removing inlines and apply patch by Mart Raudsepp git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30843 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/memory.h | 30 ++++++------------------------ src/common/memory.cpp | 38 +++++++++++++++++++++++++++++++++----- 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/include/wx/memory.h b/include/wx/memory.h index 22820dcb91..41ef650f98 100644 --- a/include/wx/memory.h +++ b/include/wx/memory.h @@ -70,36 +70,18 @@ WXDLLIMPEXP_BASE void wxDebugFree(void * buf, bool isVect = false); #define wxUSE_ARRAY_MEMORY_OPERATORS 0 #endif -inline void * operator new (size_t size, wxChar * fileName, int lineNum) -{ - return wxDebugAlloc(size, fileName, lineNum, false, false); -} +void * operator new (size_t size, wxChar * fileName, int lineNum); -inline void * operator new (size_t size) -{ - return wxDebugAlloc(size, NULL, 0, false); -} +void * operator new (size_t size); -inline void operator delete (void * buf) -{ - wxDebugFree(buf, false); -} +void operator delete (void * buf); #if wxUSE_ARRAY_MEMORY_OPERATORS -inline void * operator new[] (size_t size) -{ - return wxDebugAlloc(size, NULL, 0, false, true); -} +void * operator new[] (size_t size); -inline void * operator new[] (size_t size, wxChar * fileName, int lineNum) -{ - return wxDebugAlloc(size, fileName, lineNum, false, true); -} +void * operator new[] (size_t size, wxChar * fileName, int lineNum); -inline void operator delete[] (void * buf) -{ - wxDebugFree(buf, true); -} +void operator delete[] (void * buf); #endif // VC++ 6.0 and MWERKS diff --git a/src/common/memory.cpp b/src/common/memory.cpp index 5ca71ac6cf..0d67e157e0 100644 --- a/src/common/memory.cpp +++ b/src/common/memory.cpp @@ -910,19 +910,47 @@ private: bool m_locked; }; -MemoryCriticalSection &GetMemLocker() -{ static MemoryCriticalSection memLocker; - return memLocker; + +#endif + +void * operator new (size_t size, wxChar * fileName, int lineNum) +{ + return wxDebugAlloc(size, fileName, lineNum, false, false); } +void * operator new (size_t size) +{ + return wxDebugAlloc(size, NULL, 0, false); +} + +void operator delete (void * buf) +{ + wxDebugFree(buf, false); +} + +#if wxUSE_ARRAY_MEMORY_OPERATORS +void * operator new[] (size_t size) +{ + return wxDebugAlloc(size, NULL, 0, false, true); +} + +void * operator new[] (size_t size, wxChar * fileName, int lineNum) +{ + return wxDebugAlloc(size, fileName, lineNum, false, true); +} + +void operator delete[] (void * buf) +{ + wxDebugFree(buf, true); +} #endif // TODO: store whether this is a vector or not. void * wxDebugAlloc(size_t size, wxChar * fileName, int lineNum, bool isObject, bool WXUNUSED(isVect) ) { #if USE_THREADSAFE_MEMORY_ALLOCATION - MemoryCriticalSectionLocker lock(GetMemLocker()); + MemoryCriticalSectionLocker lock(memLocker); #endif // If not in debugging allocation mode, do the normal thing @@ -982,7 +1010,7 @@ void * wxDebugAlloc(size_t size, wxChar * fileName, int lineNum, bool isObject, void wxDebugFree(void * buf, bool WXUNUSED(isVect) ) { #if USE_THREADSAFE_MEMORY_ALLOCATION - MemoryCriticalSectionLocker lock(GetMemLocker()); + MemoryCriticalSectionLocker lock(memLocker); #endif if (!buf) -- 2.45.2