X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/81c67e27fd6a168e26e5acba949eca36cd746421..7b9da2077d0975db6c965a85c91d5aca671ab5e3:/src/common/object.cpp diff --git a/src/common/object.cpp b/src/common/object.cpp index 9f7e1913ee..de51bf7c62 100644 --- a/src/common/object.cpp +++ b/src/common/object.cpp @@ -138,7 +138,7 @@ void wxObject::operator delete(void* pData, char* /* fileName */, int /* lineNum #endif // Cause problems for VC++ - crashes -#if !defined(__VISUALC__) && wxUSE_ARRAY_MEMORY_OPERATORS +#if (!defined(__VISUALC__) && wxUSE_ARRAY_MEMORY_OPERATORS ) || defined(__MWERKS__) void * wxObject::operator new[] (size_t size, wxChar * fileName, int lineNum) { return wxDebugAlloc(size, fileName, lineNum, TRUE, TRUE); @@ -355,13 +355,15 @@ void wxObject::Ref(const wxObject& clone) void wxObject::UnRef() { - if (m_refData) { - assert(m_refData->m_count > 0); - --(m_refData->m_count); - if (m_refData->m_count == 0) + if ( m_refData ) + { + wxASSERT_MSG( m_refData->m_count > 0, _T("invalid ref data count") ); + + if ( !--m_refData->m_count ) delete m_refData; + + m_refData = (wxObjectRefData *) NULL; } - m_refData = (wxObjectRefData *) NULL; } /*