[PrintingSelector] Fix crash setting all printings to preferred (#7467)

getPreferredPrinting returns a null PrintingInfo when a deck card has no
database entry or printings. SetProviderIdToPreferred dereferenced
getSet() unconditionally, crashing on custom or unresolved cards.

Guard against a null preferred set and leave the card's cleared printing
data as is.

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2026-10-10 09:36:26 +02:00 • committed by GitHub
parent 1e1f79db0d
commit b8e8f2c738
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -15,13 +15,14 @@ void CardNodeFunction::SetProviderIdToPreferred::operator()(const InnerDecklistN
{
Q_UNUSED(node);
PrintingInfo preferredPrinting = CardDatabaseManager::query()->getPreferredPrinting(card->getName());
QString providerId = preferredPrinting.getUuid();
QString setShortName = preferredPrinting.getSet()->getShortName();
QString collectorNumber = preferredPrinting.getProperty("num");
CardSetPtr preferredSet = preferredPrinting.getSet();
if (!preferredSet) {
return;
}
card->setCardProviderId(providerId);
card->setCardCollectorNumber(collectorNumber);
card->setCardSetShortName(setShortName);
card->setCardProviderId(preferredPrinting.getUuid());
card->setCardCollectorNumber(preferredPrinting.getProperty("num"));
card->setCardSetShortName(preferredSet->getShortName());
}
void CardNodeFunction::ClearPrintingData::operator()(const InnerDecklistNode *node, DecklistCardNode *card) const