#include "wx/ioswrap.h"
-// Obsolete
-#if 0
-#if wxUSE_IOSTREAMH
- #include <fstream.h>
-#else
- #include <fstream>
-#endif
-#endif
-
#if !defined(__WATCOMC__) && !(defined(__VMS__) && ( __VMS_VER < 70000000 ) )\
&& !defined( __MWERKS__ ) && !defined(__SALFORDC__)
#include <memory.h>
#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
wxLogMessage( wxT("----- Memory dump -----") );
}
}
-
+
TraverseList ((PmSFV)&wxMemStruct::Dump, (checkPoint ? checkPoint->m_next : (wxMemStruct*)NULL));
wxLogMessage( wxT("") );
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;
}
};
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;
};
// 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.
// 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;