From 7ef2dccff806e0b32a99973fdf357f2ad6552f4c Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 15 Nov 2018 15:08:44 +0100 Subject: 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 Reviewed-by: Marco Bubke --- src/plugins/cpptools/cpptoolsreuse.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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; } -- cgit v1.2.1