Fix crash on card relation to inexistent card; fix #3637 (#3640)

* Fix crash on card relation to inexistent card; fix #3637

But that whole loop is a logic mess

* Check if related cards exists before creating the menu entry

* honor and glory to the hypnoclanfigier
This commit is contained in:
ctrlaltca 2019-03-10 18:47:24 +01:00 committed by GitHub
parent a304d4235d
commit 52cc725de4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3065,8 +3065,17 @@ void Player::addRelatedCardView(const CardItem *card, QMenu *cardMenu)
return;
}
bool atLeastOneGoodRelationFound = false;
QList<CardRelation *> relatedCards = cardInfo->getAllRelatedCards();
if (relatedCards.isEmpty()) {
for (const CardRelation *cardRelation : relatedCards) {
CardInfoPtr relatedCard = db->getCard(cardRelation->getName());
if (relatedCard != nullptr) {
atLeastOneGoodRelationFound = true;
break;
}
}
if (!atLeastOneGoodRelationFound) {
return;
}
@ -3137,11 +3146,14 @@ void Player::addRelatedCardActions(const CardItem *card, QMenu *cardMenu)
cardMenu->addAction(createRelated);
}
if (shortcutsActive) {
createRelatedCards->setShortcut(settingsCache->shortcuts().getSingleShortcut("Player/aCreateRelatedTokens"));
if (createRelatedCards) {
if (shortcutsActive) {
createRelatedCards->setShortcut(
settingsCache->shortcuts().getSingleShortcut("Player/aCreateRelatedTokens"));
}
connect(createRelatedCards, SIGNAL(triggered()), this, SLOT(actCreateAllRelatedCards()));
cardMenu->addAction(createRelatedCards);
}
connect(createRelatedCards, SIGNAL(triggered()), this, SLOT(actCreateAllRelatedCards()));
cardMenu->addAction(createRelatedCards);
}
void Player::setCardMenu(QMenu *menu)