summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2023-10-13 13:41:16 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2023-10-18 17:02:25 +0200
commit66ee534fba6c42e03677bc6d7666eb64aec1e182 (patch)
treeaa515bc996638921f5c269b2da608fe108954054
parentb8790ce4295021fc8d078db40997806b1f051168 (diff)
SignalDumper: fix UB (data race on ignoreLevel)6.5
... by making it thread_local. It is written and read by multiple threads at the same time, so it needs to be protected. Since signal emission start and end happens in a single thread, keep it thread_local rather than using an atomic. Change-Id: I98fc5438c512b45f936318be31a6fccbe5b66944 Reviewed-by: Marc Mutz <marc.mutz@qt.io> (cherry picked from commit 744e9a69ab4965561529f66d8872b6c2455f4fca) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 73cae2903bb009db17bdf0d4d5ba7685f7974761) Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
-rw-r--r--src/testlib/qsignaldumper.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/testlib/qsignaldumper.cpp b/src/testlib/qsignaldumper.cpp
index f0c35b92f9..54b608ed50 100644
--- a/src/testlib/qsignaldumper.cpp
+++ b/src/testlib/qsignaldumper.cpp
@@ -25,7 +25,7 @@ inline static void qPrintMessage(const QByteArray &ba)
Q_GLOBAL_STATIC(QList<QByteArray>, ignoreClasses)
Q_CONSTINIT thread_local int iLevel = 0;
-static int ignoreLevel = 0;
+Q_CONSTINIT thread_local int ignoreLevel = 0;
enum { IndentSpacesCount = 4 };
static void qSignalDumperCallback(QObject *caller, int signal_index, void **argv)