X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6f28211af2258ce0c052e5b5c1d862e7bbc8de27..121fa06ab6af9129e776af13949fc251a3cafc49:/src/common/memory.cpp diff --git a/src/common/memory.cpp b/src/common/memory.cpp index e32260e3aa..5ca71ac6cf 100644 --- a/src/common/memory.cpp +++ b/src/common/memory.cpp @@ -68,7 +68,7 @@ #include "wx/memory.h" -#if wxUSE_THREADS && defined(__WXDEBUG__) && !defined(__WXMAC__) +#if wxUSE_THREADS && defined(__WXDEBUG__) #define USE_THREADSAFE_MEMORY_ALLOCATION 1 #else #define USE_THREADSAFE_MEMORY_ALLOCATION 0 @@ -117,7 +117,7 @@ */ void wxMemStruct::ErrorMsg (const char * mesg) { - wxLogMessage(wxT("wxWindows memory checking error: %s"), mesg); + wxLogMessage(wxT("wxWidgets memory checking error: %s"), mesg); PrintNode (); } @@ -126,7 +126,7 @@ void wxMemStruct::ErrorMsg (const char * mesg) */ void wxMemStruct::ErrorMsg () { - wxLogMessage(wxT("wxWindows over/underwrite memory error:")); + wxLogMessage(wxT("wxWidgets over/underwrite memory error:")); PrintNode (); } @@ -867,13 +867,13 @@ void wxDebugContext::OutputDumpLine(const wxChar *szFormat, ...) int count; va_list argptr; va_start(argptr, szFormat); - buf[sizeof(buf)-1] = _T('\0'); + buf[sizeof(buf)/sizeof(wxChar)-1] = _T('\0'); // keep 3 bytes for a \r\n\0 - count = wxVsnprintf(buf, sizeof(buf)-3, szFormat, argptr); + count = wxVsnprintf(buf, sizeof(buf)/sizeof(wxChar)-3, szFormat, argptr); if ( count < 0 ) - count = sizeof(buf)-3; + count = sizeof(buf)/sizeof(wxChar)-3; buf[count]=_T('\r'); buf[count+1]=_T('\n'); buf[count+2]=_T('\0'); @@ -889,16 +889,16 @@ static bool memSectionOk = false; class MemoryCriticalSection : public wxCriticalSection { public: - MemoryCriticalSection() { - memSectionOk = true; - } + MemoryCriticalSection() { + memSectionOk = true; + } }; class MemoryCriticalSectionLocker { public: inline MemoryCriticalSectionLocker(wxCriticalSection& critsect) - : m_critsect(critsect), m_locked(memSectionOk) { if(m_locked) m_critsect.Enter(); } + : m_critsect(critsect), m_locked(memSectionOk) { if(m_locked) m_critsect.Enter(); } inline ~MemoryCriticalSectionLocker() { if(m_locked) m_critsect.Leave(); } private: @@ -907,17 +907,22 @@ private: MemoryCriticalSectionLocker& operator=(const MemoryCriticalSectionLocker&); wxCriticalSection& m_critsect; - bool m_locked; + bool m_locked; }; -static MemoryCriticalSection memLocker; +MemoryCriticalSection &GetMemLocker() +{ + static MemoryCriticalSection memLocker; + return memLocker; +} + #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(memLocker); + MemoryCriticalSectionLocker lock(GetMemLocker()); #endif // If not in debugging allocation mode, do the normal thing @@ -977,7 +982,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(memLocker); + MemoryCriticalSectionLocker lock(GetMemLocker()); #endif if (!buf)