QLogging: DRY isFatal(QtMsgType)

Extract Method on the count-down algorithm of fatalCriticals and
fatalWarnings, so we don't have the repeat the calculation and the
comment.

Task-number: QTBUG-115062
Change-Id: I4bcbc2f5a21b999e7f301085581677b437a889e9
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
(cherry picked from commit 3ffc1f9775cde1369ebdfcfa91ec18c393c24260)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2023-07-05 07:42:19 +02:00 committed by Qt Cherry-pick Bot
parent e0fb09e83f
commit a6b47b7b1f

View File

@ -184,6 +184,13 @@ static int checked_var_value(const char *varname)
return ok ? value : 1;
}
static bool is_fatal_count_down(QAtomicInt &n)
{
// it's fatal if the current value is exactly 1,
// otherwise decrement if it's non-zero
return n.loadRelaxed() && n.fetchAndAddRelaxed(-1) == 1;
}
static bool isFatal(QtMsgType msgType)
{
if (msgType == QtFatalMsg)
@ -191,18 +198,12 @@ static bool isFatal(QtMsgType msgType)
if (msgType == QtCriticalMsg) {
static QAtomicInt fatalCriticals = checked_var_value("QT_FATAL_CRITICALS");
// it's fatal if the current value is exactly 1,
// otherwise decrement if it's non-zero
return fatalCriticals.loadRelaxed() && fatalCriticals.fetchAndAddRelaxed(-1) == 1;
return is_fatal_count_down(fatalCriticals);
}
if (msgType == QtWarningMsg || msgType == QtCriticalMsg) {
static QAtomicInt fatalWarnings = checked_var_value("QT_FATAL_WARNINGS");
// it's fatal if the current value is exactly 1,
// otherwise decrement if it's non-zero
return fatalWarnings.loadRelaxed() && fatalWarnings.fetchAndAddRelaxed(-1) == 1;
return is_fatal_count_down(fatalWarnings);
}
return false;