From: Vadim Zeitlin Date: Mon, 1 Mar 1999 18:20:12 +0000 (+0000) Subject: wxCriticalSection changes undone - should work now X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/26128999a7e2bc05024e09ba2658d4a6ab87accd?ds=sidebyside wxCriticalSection changes undone - should work now git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1842 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/string.cpp b/src/common/string.cpp index 37a116fa02..fbdedd721e 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -1461,12 +1461,16 @@ void wxArrayString::Remove(const char *sz) // need a critical section to protect access to gs_compareFunction and // gs_sortAscending variables - static wxCriticalSection gs_critsectStringSort; + static wxCriticalSection *gs_critsectStringSort = NULL; // call this before the value of the global sort vars is changed/after // you're finished with them - #define START_SORT() gs_critsectStringSort.Enter() - #define END_SORT() gs_critsectStringSort.Leave() + #define START_SORT() wxASSERT( !gs_critsectStringSort ); \ + gs_critsectStringSort = new wxCriticalSection; \ + gs_critsectStringSort->Enter() + #define END_SORT() gs_critsectStringSort->Leave(); \ + delete gs_critsectStringSort; \ + gs_critsectStringSort = NULL #else // !threads #define START_SORT() #define END_SORT() diff --git a/src/msw/thread.cpp b/src/msw/thread.cpp index 3ee7c1149a..1e642fd8e8 100644 --- a/src/msw/thread.cpp +++ b/src/msw/thread.cpp @@ -257,29 +257,22 @@ private: wxCriticalSection::wxCriticalSection() { - m_critsect = NULL; + m_critsect = new wxCriticalSectionInternal; } wxCriticalSection::~wxCriticalSection() { - wxASSERT_MSG( !m_critsect, "Forgot to Leave() critical section" ); + delete m_critsect; } void wxCriticalSection::Enter() { - m_critsect = new wxCriticalSectionInternal; - ::EnterCriticalSection(*m_critsect); } void wxCriticalSection::Leave() { - wxCHECK_RET( m_critsect, "Leave() without matching Enter()" ); - ::LeaveCriticalSection(*m_critsect); - - delete m_critsect; - m_critsect = NULL; } // ----------------------------------------------------------------------------