summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2018-11-15 15:08:44 +0100
committerNikolai Kosjar <nikolai.kosjar@qt.io>2018-11-15 14:55:12 +0000
commit7ef2dccff806e0b32a99973fdf357f2ad6552f4c (patch)
tree2d123e1c6cb68cd588792639ad996c70c6636d27
parent03bda2aee8202af3b3dd916bcbedad4baf5ca272 (diff)
downloadqt-creator-7ef2dccff806e0b32a99973fdf357f2ad6552f4c.tar.gz
CppTools: Fix thread-unsafe call to MessageManager::write()
The Preprocessor running in a worker thread can call this function. Fixes: QTCREATORBUG-21481 Change-Id: I4970379fbabae23cfa3d7c1222e81a4ae8c3e6ad Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Marco Bubke <marco.bubke@qt.io>
-rw-r--r--src/plugins/cpptools/cpptoolsreuse.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp
index be30a6e3a2..944196f938 100644
--- a/src/plugins/cpptools/cpptoolsreuse.cpp
+++ b/src/plugins/cpptools/cpptoolsreuse.cpp
@@ -258,7 +258,20 @@ bool fileSizeExceedsLimit(const QFileInfo &fileInfo, int sizeLimitInMb)
"CppIndexer",
"C++ Indexer: Skipping file \"%1\" because it is too big.")
.arg(absoluteFilePath);
- Core::MessageManager::write(msg, Core::MessageManager::Silent);
+
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
+ QMetaObject::invokeMethod(Core::MessageManager::instance(), [msg]() {
+ Core::MessageManager::write(msg, Core::MessageManager::Silent);
+ });
+#else
+ QMetaObject::invokeMethod(Core::MessageManager::instance(),
+ "write",
+ Qt::QueuedConnection,
+ Q_ARG(QString, msg),
+ Q_ARG(Core::MessageManager::PrintToOutputPaneFlags,
+ Core::MessageManager::Silent));
+#endif
+
qWarning().noquote() << msg;
return true;
}