mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-06 10:03:26 -08:00
[Settings] Delete update channels at shutdown
SettingsCache owns the stable and beta update channels as raw pointers, and each owns a QNetworkAccessManager, so the process leaves QtNetwork objects alive past QApplication teardown. Delete them from a QCoreApplication::aboutToQuit handler instead of the destructor: SettingsCache is a Q_GLOBAL_STATIC, so ~SettingsCache() runs during static teardown, after QApplication is gone, and destroying the network managers at that point is the post-application window that ASan reports. The hook is installed on the first instance() call that has an application object, since the first access may predate it.
This commit is contained in:
parent
c9685076b9
commit
834f37c1b5
2 changed files with 32 additions and 1 deletions
|
|
@ -91,8 +91,13 @@ private:
|
|||
QString themeName;
|
||||
|
||||
QList<ReleaseChannel *> releaseChannels;
|
||||
bool shutdownHookInstalled = false;
|
||||
bool isPortableBuild;
|
||||
|
||||
// Connects the aboutToQuit handler that deletes the release channels while
|
||||
// the application object is still alive; a no-op before it exists.
|
||||
void installShutdownHook();
|
||||
|
||||
[[nodiscard]] QString getSafeConfigPath(QString configEntry, QString defaultPath) const;
|
||||
[[nodiscard]] QString getSafeConfigFilePath(QString configEntry, QString defaultPath) const;
|
||||
void loadPaths();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue