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>
This commit is contained in:
Eike Ziller
2020-03-27 12:55:38 +01:00
parent faad83d5a3
commit 99cd623fa7

View File

@@ -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();
}
}
}
}