X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b5c702530ee772946d878a15c63ae264299bb6eb..07243717e26bda497d5a8b325c2e6acf4ee033cf:/src/common/memory.cpp diff --git a/src/common/memory.cpp b/src/common/memory.cpp index bfd1e61d41..a7439bacfd 100644 --- a/src/common/memory.cpp +++ b/src/common/memory.cpp @@ -44,15 +44,6 @@ #include "wx/ioswrap.h" -// Obsolete -#if 0 -#if wxUSE_IOSTREAMH - #include -#else - #include -#endif -#endif - #if !defined(__WATCOMC__) && !(defined(__VMS__) && ( __VMS_VER < 70000000 ) )\ && !defined( __MWERKS__ ) && !defined(__SALFORDC__) #include @@ -76,6 +67,13 @@ #include "wx/memory.h" +#if wxUSE_THREADS && defined(__WXDEBUG__) && !defined(__WXMAC__) +#define USE_THREADSAFE_MEMORY_ALLOCATION 1 +#else +#define USE_THREADSAFE_MEMORY_ALLOCATION 0 +#endif + + #ifdef new #undef new #endif @@ -621,7 +619,7 @@ bool wxDebugContext::Dump(void) wxLogMessage( wxT("----- Memory dump -----") ); } } - + TraverseList ((PmSFV)&wxMemStruct::Dump, (checkPoint ? checkPoint->m_next : (wxMemStruct*)NULL)); wxLogMessage( wxT("") ); @@ -859,14 +857,14 @@ int wxDebugContext::CountObjectsLeft(bool sinceCheckpoint) return n ; } -#if wxUSE_THREADS -static bool memSectionOk = false; +#if USE_THREADSAFE_MEMORY_ALLOCATION +static bool memSectionOk = FALSE; class MemoryCriticalSection : public wxCriticalSection { public: MemoryCriticalSection() { - memSectionOk = true; + memSectionOk = TRUE; } }; @@ -876,12 +874,12 @@ public: inline MemoryCriticalSectionLocker(wxCriticalSection& critsect) : m_critsect(critsect), m_locked(memSectionOk) { if(m_locked) m_critsect.Enter(); } inline ~MemoryCriticalSectionLocker() { if(m_locked) m_critsect.Leave(); } - + private: // no assignment operator nor copy ctor MemoryCriticalSectionLocker(const MemoryCriticalSectionLocker&); MemoryCriticalSectionLocker& operator=(const MemoryCriticalSectionLocker&); - + wxCriticalSection& m_critsect; bool m_locked; }; @@ -892,10 +890,10 @@ static MemoryCriticalSection memLocker; // TODO: store whether this is a vector or not. void * wxDebugAlloc(size_t size, wxChar * fileName, int lineNum, bool isObject, bool WXUNUSED(isVect) ) { -#if wxUSE_THREADS +#if USE_THREADSAFE_MEMORY_ALLOCATION MemoryCriticalSectionLocker lock(memLocker); #endif - + // If not in debugging allocation mode, do the normal thing // so we don't leave any trace of ourselves in the node list. @@ -952,10 +950,10 @@ void * wxDebugAlloc(size_t size, wxChar * fileName, int lineNum, bool isObject, // TODO: check whether was allocated as a vector void wxDebugFree(void * buf, bool WXUNUSED(isVect) ) { -#if wxUSE_THREADS +#if USE_THREADSAFE_MEMORY_ALLOCATION MemoryCriticalSectionLocker lock(memLocker); #endif - + if (!buf) return;