]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/memory.cpp
added wxUmaskChanger class and wxCHANGE_UMASK macro and use them instead of duplicati...
[wxWidgets.git] / src / common / memory.cpp
index e32260e3aadeaa3b7c0af85ad1aaa050ff307dbb..5ca71ac6cf345b4018cc3114dbcf2d1fbbd92f90 100644 (file)
@@ -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
 */
 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)