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