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
This commit is contained in:
Julian Smart 2004-12-02 12:04:46 +00:00
parent c242a1ec6d
commit aaf1bbfd62
2 changed files with 39 additions and 29 deletions

View File

@ -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

View File

@ -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)