fix segfault on exit if any closable tabs were open (#5435)

This commit is contained in:
RickyRister 2025-01-10 14:27:26 -08:00 committed by GitHub
parent 2b3c47148e
commit 1a3df84f0a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -304,19 +304,28 @@ void TabSupervisor::stop()
tabAdmin = 0;
tabLog = 0;
QMapIterator<int, TabRoom *> roomIterator(roomTabs);
while (roomIterator.hasNext())
roomIterator.next().value()->deleteLater();
for (const auto tab : deckEditorTabs) {
disconnect(tab, nullptr, this, nullptr);
tab->deleteLater();
}
deckEditorTabs.clear();
for (auto i = roomTabs.cbegin(), end = roomTabs.cend(); i != end; ++i) {
disconnect(i.value(), nullptr, this, nullptr);
i.value()->deleteLater();
}
roomTabs.clear();
QMapIterator<int, TabGame *> gameIterator(gameTabs);
while (gameIterator.hasNext())
gameIterator.next().value()->deleteLater();
for (auto i = gameTabs.cbegin(), end = gameTabs.cend(); i != end; ++i) {
disconnect(i.value(), nullptr, this, nullptr);
i.value()->deleteLater();
}
gameTabs.clear();
QListIterator<TabGame *> replayIterator(replayTabs);
while (replayIterator.hasNext())
replayIterator.next()->deleteLater();
for (const auto tab : replayTabs) {
disconnect(tab, nullptr, this, nullptr);
tab->deleteLater();
}
replayTabs.clear();
delete userInfo;