aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-03-27 12:55:38 +0100
committerEike Ziller <eike.ziller@qt.io>2020-03-30 06:10:44 +0000
commit99cd623fa7b9d57c78c9b59d37bc7e12f74bbd34 (patch)
tree22c712f6ac55d327e6f1f3291788b2b4096e5ef0
parentfaad83d5a37448b472af2efa76b7193c83f2c1f1 (diff)
QmlDesigner: Fix crash when selecting ISO icon
On macOS. Never use dynamic_cast over library boundaries - it may or may not work, depending on compiler/platform. Fixes: QTCREATORBUG-23773 Change-Id: I889d35f336ff80e2b1ae3cbe921f7de2fe541bd8 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r--src/plugins/qmldesigner/documentmanager.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/plugins/qmldesigner/documentmanager.cpp b/src/plugins/qmldesigner/documentmanager.cpp
index 2cae7208c5..0e657f777c 100644
--- a/src/plugins/qmldesigner/documentmanager.cpp
+++ b/src/plugins/qmldesigner/documentmanager.cpp
@@ -398,19 +398,20 @@ void DocumentManager::findPathToIsoProFile(bool *iconResourceFileAlreadyExists,
qCDebug(documentManagerLog) << "Checking" << node->displayName() << "(" << node << ")";
if (node->isVirtualFolderType() && node->displayName() == "Resources") {
- auto virtualFolderNode = dynamic_cast<ProjectExplorer::VirtualFolderNode*>(node);
+ ProjectExplorer::FolderNode *virtualFolderNode = node->asFolderNode();
+ if (QTC_GUARD(virtualFolderNode)) {
+ for (int subFolderIndex = 0; subFolderIndex < virtualFolderNode->folderNodes().size() && !iconQrcFileNode; ++subFolderIndex) {
+ ProjectExplorer::FolderNode *subFolderNode = virtualFolderNode->folderNodes().at(subFolderIndex);
- for (int subFolderIndex = 0; subFolderIndex < virtualFolderNode->folderNodes().size() && !iconQrcFileNode; ++subFolderIndex) {
- ProjectExplorer::FolderNode *subFolderNode = virtualFolderNode->folderNodes().at(subFolderIndex);
+ qCDebug(documentManagerLog) << "Checking if" << subFolderNode->displayName() << "("
+ << subFolderNode << ") is" << isoIconsQrcFile;
- qCDebug(documentManagerLog) << "Checking if" << subFolderNode->displayName() << "("
- << subFolderNode << ") is" << isoIconsQrcFile;
+ if (subFolderNode->isFolderNodeType() && subFolderNode->displayName() == isoIconsQrcFile) {
+ qCDebug(documentManagerLog) << "Found" << isoIconsQrcFile << "in" << virtualFolderNode->filePath();
- if (subFolderNode->isFolderNodeType() && subFolderNode->displayName() == isoIconsQrcFile) {
- qCDebug(documentManagerLog) << "Found" << isoIconsQrcFile << "in" << virtualFolderNode->filePath();
-
- iconQrcFileNode = subFolderNode;
- *resourceFileProPath = iconQrcFileNode->parentProjectNode()->filePath().toString();
+ iconQrcFileNode = subFolderNode;
+ *resourceFileProPath = iconQrcFileNode->parentProjectNode()->filePath().toString();
+ }
}
}
}