Core: Do not use help engine of another thread

As documentation is now registered in another thread
accessing the help engine from the main thread may crash.

Task-number: QTCREATORBUG-19933
Change-Id: Id5e376c793156bf2d553c237cfb068b000c5afb1
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
David Schulz
2018-03-01 10:12:45 +01:00
parent 5915779e81
commit 35efebf6f8

View File

@@ -158,7 +158,7 @@ void HelpManager::registerDocumentationNow(QFutureInterface<bool> &futureInterfa
QHelpEngineCore helpEngine(collectionFilePath()); QHelpEngineCore helpEngine(collectionFilePath());
helpEngine.setupData(); helpEngine.setupData();
bool docsChanged = false; bool docsChanged = false;
QStringList nameSpaces = d->m_helpEngine->registeredDocumentations(); QStringList nameSpaces = helpEngine.registeredDocumentations();
for (const QString &file : files) { for (const QString &file : files) {
if (futureInterface.isCanceled()) if (futureInterface.isCanceled())
break; break;
@@ -178,7 +178,7 @@ void HelpManager::registerDocumentationNow(QFutureInterface<bool> &futureInterfa
const QLatin1String key("CreationDate"); const QLatin1String key("CreationDate");
const QString &newDate = helpEngine.metaData(file, key).toString(); const QString &newDate = helpEngine.metaData(file, key).toString();
const QString &oldDate = helpEngine.metaData( const QString &oldDate = helpEngine.metaData(
d->m_helpEngine->documentationFileName(nameSpace), key).toString(); helpEngine.documentationFileName(nameSpace), key).toString();
if (QDateTime::fromString(newDate, Qt::ISODate) if (QDateTime::fromString(newDate, Qt::ISODate)
> QDateTime::fromString(oldDate, Qt::ISODate)) { > QDateTime::fromString(oldDate, Qt::ISODate)) {
if (helpEngine.unregisterDocumentation(nameSpace)) { if (helpEngine.unregisterDocumentation(nameSpace)) {