From 884b38157689a893ace0a4c793fab921167abb2c Mon Sep 17 00:00:00 2001 From: David Faure Date: Sun, 8 Jun 2014 21:46:24 +0200 Subject: Fix data race on QLoggingCategory when using qDebug from multiple threads setEnabled() would race with isEnabled()/isDebugEnabled()/etc. Change-Id: I2004cba81d5417a634b97f5c2f98d3a4ab71770d Reviewed-by: David Faure --- src/corelib/arch/qatomic_bootstrap.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/corelib/arch') diff --git a/src/corelib/arch/qatomic_bootstrap.h b/src/corelib/arch/qatomic_bootstrap.h index 7f17387c9c..0d6843a3e5 100644 --- a/src/corelib/arch/qatomic_bootstrap.h +++ b/src/corelib/arch/qatomic_bootstrap.h @@ -67,8 +67,10 @@ template struct QAtomicOps: QGenericAtomicOps > return --_q_value != 0; } - static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) Q_DECL_NOTHROW + static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue = 0) Q_DECL_NOTHROW { + if (currentValue) + *currentValue = _q_value; if (_q_value == expectedValue) { _q_value = newValue; return true; -- cgit v1.2.3