From a2d382650097c5834093a8af0566e1c1ff683c8d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 24 Oct 2007 17:59:53 +0000 Subject: [PATCH] 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 --- include/wx/log.h | 3 +++ src/common/log.cpp | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/include/wx/log.h b/include/wx/log.h index adab3ceb5b..bff6f448c3 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -14,6 +14,8 @@ #include "wx/defs.h" +#include "wx/thread.h" + // ---------------------------------------------------------------------------- // common constants for use in wxUSE_LOG/!wxUSE_LOG // ---------------------------------------------------------------------------- @@ -313,6 +315,7 @@ private: // with the number of times it was repeated 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 unsigned ms_prevCounter; // how many times it was repeated static time_t ms_prevTimeStamp;// timestamp of the previous message diff --git a/src/common/log.cpp b/src/common/log.cpp index 03d6f0adf4..9ca1c34bd7 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -460,6 +460,8 @@ void WXDLLEXPORT wxVLogSysError(unsigned long err, const wxString& format, va_li /* static */ void wxLog::LogLastRepetitionCountIfNeeded() { + wxCRIT_SECT_LOCKER(lock, ms_prevCS); + wxLog *pLogger = GetActiveTarget(); if ( pLogger && ms_prevCounter ) { @@ -494,6 +496,8 @@ void wxLog::OnLog(wxLogLevel level, const wxString& szString, time_t t) { if ( GetRepetitionCounting() ) { + wxCRIT_SECT_LOCKER(lock, ms_prevCS); + if ( szString == ms_prevString ) { ms_prevCounter++; -- 2.47.2