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:
@@ -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"
|
||||
|
Reference in New Issue
Block a user