add a critical section protecting ms_prev variables (replaces patch 1819224)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-10-24 17:59:53 +00:00
parent 2064113c9d
commit a2d3826500
2 changed files with 7 additions and 0 deletions

View File

@@ -14,6 +14,8 @@
#include "wx/defs.h" #include "wx/defs.h"
#include "wx/thread.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// common constants for use in wxUSE_LOG/!wxUSE_LOG // common constants for use in wxUSE_LOG/!wxUSE_LOG
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -313,6 +315,7 @@ private:
// with the number of times it was repeated // with the number of times it was repeated
static bool ms_bRepetCounting; static bool ms_bRepetCounting;
wxCRIT_SECT_DECLARE(ms_prevCS); // protects the ms_prev values below
static wxString ms_prevString; // previous message that was logged static wxString ms_prevString; // previous message that was logged
static unsigned ms_prevCounter; // how many times it was repeated static unsigned ms_prevCounter; // how many times it was repeated
static time_t ms_prevTimeStamp;// timestamp of the previous message static time_t ms_prevTimeStamp;// timestamp of the previous message

View File

@@ -460,6 +460,8 @@ void WXDLLEXPORT wxVLogSysError(unsigned long err, const wxString& format, va_li
/* static */ /* static */
void wxLog::LogLastRepetitionCountIfNeeded() void wxLog::LogLastRepetitionCountIfNeeded()
{ {
wxCRIT_SECT_LOCKER(lock, ms_prevCS);
wxLog *pLogger = GetActiveTarget(); wxLog *pLogger = GetActiveTarget();
if ( pLogger && ms_prevCounter ) if ( pLogger && ms_prevCounter )
{ {
@@ -494,6 +496,8 @@ void wxLog::OnLog(wxLogLevel level, const wxString& szString, time_t t)
{ {
if ( GetRepetitionCounting() ) if ( GetRepetitionCounting() )
{ {
wxCRIT_SECT_LOCKER(lock, ms_prevCS);
if ( szString == ms_prevString ) if ( szString == ms_prevString )
{ {
ms_prevCounter++; ms_prevCounter++;