Applied patch [ 1113624 ] MSW DLL requires global new/delete ops inline
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31880 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -42,9 +42,7 @@ WXDLLIMPEXP_BASE void wxDebugFree(void * buf, bool isVect = false);
|
|||||||
|
|
||||||
// We'll only do malloc and free for the moment: leave the interesting
|
// We'll only do malloc and free for the moment: leave the interesting
|
||||||
// stuff for the wxObject versions.
|
// stuff for the wxObject versions.
|
||||||
// devik 2000-8-29: All new/delete ops are now inline because they can't
|
|
||||||
// be marked as dllexport/dllimport. It then leads to weird bugs when
|
|
||||||
// used on MSW as DLL
|
|
||||||
|
|
||||||
#if wxUSE_GLOBAL_MEMORY_OPERATORS
|
#if wxUSE_GLOBAL_MEMORY_OPERATORS
|
||||||
|
|
||||||
@@ -70,6 +68,44 @@ WXDLLIMPEXP_BASE void wxDebugFree(void * buf, bool isVect = false);
|
|||||||
#define wxUSE_ARRAY_MEMORY_OPERATORS 0
|
#define wxUSE_ARRAY_MEMORY_OPERATORS 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// devik 2000-8-29: All new/delete ops are now inline because they can't
|
||||||
|
// be marked as dllexport/dllimport. It then leads to weird bugs when
|
||||||
|
// used on MSW as DLL
|
||||||
|
#if defined(__WXMSW__) && (defined(WXUSINGDLL) || defined(WXMAKINGDLL_BASE))
|
||||||
|
inline void * operator new (size_t size, wxChar * fileName, int lineNum)
|
||||||
|
{
|
||||||
|
return wxDebugAlloc(size, fileName, lineNum, FALSE, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void * operator new (size_t size)
|
||||||
|
{
|
||||||
|
return wxDebugAlloc(size, NULL, 0, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void operator delete (void * buf)
|
||||||
|
{
|
||||||
|
wxDebugFree(buf, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if wxUSE_ARRAY_MEMORY_OPERATORS
|
||||||
|
inline void * operator new[] (size_t size)
|
||||||
|
{
|
||||||
|
return wxDebugAlloc(size, NULL, 0, FALSE, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void * operator new[] (size_t size, wxChar * fileName, int lineNum)
|
||||||
|
{
|
||||||
|
return wxDebugAlloc(size, fileName, lineNum, FALSE, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void operator delete[] (void * buf)
|
||||||
|
{
|
||||||
|
wxDebugFree(buf, TRUE);
|
||||||
|
}
|
||||||
|
#endif // wxUSE_ARRAY_MEMORY_OPERATORS
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
void * operator new (size_t size, wxChar * fileName, int lineNum);
|
void * operator new (size_t size, wxChar * fileName, int lineNum);
|
||||||
|
|
||||||
void * operator new (size_t size);
|
void * operator new (size_t size);
|
||||||
@@ -82,7 +118,8 @@ void * operator new[] (size_t size);
|
|||||||
void * operator new[] (size_t size, wxChar * fileName, int lineNum);
|
void * operator new[] (size_t size, wxChar * fileName, int lineNum);
|
||||||
|
|
||||||
void operator delete[] (void * buf);
|
void operator delete[] (void * buf);
|
||||||
#endif
|
#endif // wxUSE_ARRAY_MEMORY_OPERATORS
|
||||||
|
#endif // defined(__WXMSW__) && (defined(WXUSINGDLL) || defined(WXMAKINGDLL_BASE))
|
||||||
|
|
||||||
// VC++ 6.0 and MWERKS
|
// VC++ 6.0 and MWERKS
|
||||||
#if ( defined(__VISUALC__) && (__VISUALC__ >= 1200) ) || defined(__MWERKS__)
|
#if ( defined(__VISUALC__) && (__VISUALC__ >= 1200) ) || defined(__MWERKS__)
|
||||||
|
@@ -917,6 +917,7 @@ static MemoryCriticalSection memLocker;
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !(defined(__WXMSW__) && (defined(WXUSINGDLL) || defined(WXMAKINGDLL_BASE)))
|
||||||
#ifdef __WXDEBUG__
|
#ifdef __WXDEBUG__
|
||||||
#if wxUSE_GLOBAL_MEMORY_OPERATORS
|
#if wxUSE_GLOBAL_MEMORY_OPERATORS
|
||||||
void * operator new (size_t size, wxChar * fileName, int lineNum)
|
void * operator new (size_t size, wxChar * fileName, int lineNum)
|
||||||
@@ -949,7 +950,8 @@ void operator delete[] (void * buf)
|
|||||||
{
|
{
|
||||||
wxDebugFree(buf, true);
|
wxDebugFree(buf, true);
|
||||||
}
|
}
|
||||||
#endif
|
#endif // wxUSE_ARRAY_MEMORY_OPERATORS
|
||||||
|
#endif // !(defined(__WXMSW__) && (defined(WXUSINGDLL) || defined(WXMAKINGDLL_BASE)))
|
||||||
#endif // wxUSE_GLOBAL_MEMORY_OPERATORS
|
#endif // wxUSE_GLOBAL_MEMORY_OPERATORS
|
||||||
|
|
||||||
// TODO: store whether this is a vector or not.
|
// TODO: store whether this is a vector or not.
|
||||||
|
Reference in New Issue
Block a user