protect access to ms_aTraceMasks with a critical section (replaces patch 1911172)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-03-15 03:42:48 +00:00
parent d038247519
commit f96233d53e
2 changed files with 25 additions and 5 deletions

View File

@@ -618,8 +618,17 @@ void wxLog::DoCreateOnDemand()
ms_bAutoCreate = true;
}
void wxLog::AddTraceMask(const wxString& str)
{
wxCRIT_SECT_LOCKER(lock, ms_traceCS);
ms_aTraceMasks.push_back(str);
}
void wxLog::RemoveTraceMask(const wxString& str)
{
wxCRIT_SECT_LOCKER(lock, ms_traceCS);
int index = ms_aTraceMasks.Index(str);
if ( index != wxNOT_FOUND )
ms_aTraceMasks.RemoveAt((size_t)index);
@@ -627,6 +636,8 @@ void wxLog::RemoveTraceMask(const wxString& str)
void wxLog::ClearTraceMasks()
{
wxCRIT_SECT_LOCKER(lock, ms_traceCS);
ms_aTraceMasks.Clear();
}
@@ -722,11 +733,16 @@ void wxLog::Flush()
/*static*/ bool wxLog::IsAllowedTraceMask(const wxString& mask)
{
wxCRIT_SECT_LOCKER(lock, ms_traceCS);
for ( wxArrayString::iterator it = ms_aTraceMasks.begin(),
en = ms_aTraceMasks.end();
it != en; ++it )
{
if ( *it == mask)
return true;
}
return false;
}
@@ -924,7 +940,8 @@ wxLogInterposerTemp::wxLogInterposerTemp()
// ----------------------------------------------------------------------------
#if wxUSE_THREADS
wxCriticalSection wxLog::ms_prevCS;
wxCriticalSection wxLog::ms_prevCS,
wxLog::ms_traceCS;
#endif // wxUSE_THREADS
bool wxLog::ms_bRepetCounting = false;
wxString wxLog::ms_prevString;