DecRef();
}
- CharType *release()
+ // NB: this method is only const for backward compatibility. It used to
+ // be needed for auto_ptr-like semantics of the copy ctor, but now
+ // that ref-counting is used, it's not really needed.
+ CharType *release() const
{
if ( m_data == &NullData )
return NULL;
wxASSERT_MSG( m_data->m_ref == 1, _T("can't release shared buffer") );
CharType *p = m_data->m_str;
- m_data->m_str = NULL;
- DecRef();
+
+ wxCharTypeBuffer *self = wx_const_cast(wxCharTypeBuffer*, this);
+ self->m_data->m_str = NULL;
+ self->DecRef();
+
return p;
}
// placeholder for NULL string, to simplify this code
// NB: this is defined in string.cpp, not (non-existent) buffer.cpp
+#ifdef __MINGW32__
+ // MinGW requires explicit WXDLLIMPEXP_DATA_BASE to avoid compilation
+ // errors
static WXDLLIMPEXP_DATA_BASE(Data) NullData;
+#else
+ // but Visual C++ doesn't like it
+ static Data NullData;
+#endif
void IncRef()
{