wxArrayString::Sort() wasn't MT-safe even though it tried to

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-06-03 22:32:36 +00:00
parent 0a77a468a7
commit eaba6eba3a

View File

@@ -2397,19 +2397,7 @@ void wxArrayString::assign(const_iterator first, const_iterator last)
#if wxUSE_THREADS
// need a critical section to protect access to gs_compareFunction and
// gs_sortAscending variables
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() 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()
static wxCriticalSection gs_critsectStringSort;
#endif // wxUSE_THREADS
// function to use for string comparaison
@@ -2440,7 +2428,7 @@ wxStringCompareFunction(const void *first, const void *second)
// sort array elements using passed comparaison function
void wxArrayString::Sort(CompareFunction compareFunction)
{
START_SORT();
wxCRIT_SECT_LOCKER(lockCmpFunc, gs_critsectStringSort);
wxASSERT( !gs_compareFunction ); // must have been reset to NULL
gs_compareFunction = compareFunction;
@@ -2449,8 +2437,6 @@ void wxArrayString::Sort(CompareFunction compareFunction)
// reset it to NULL so that Sort(bool) will work the next time
gs_compareFunction = NULL;
END_SORT();
}
extern "C"