diff options
author | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2025-04-01 11:40:37 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2025-04-01 11:40:41 +0200 |
commit | ce60630c42e232bf81f22019e3499d6036a68f7e (patch) | |
tree | 08c7615faf264149229fbc681b708d5bd14d2259 /src/net | |
parent | 1d41d71eff082bb3232962ac6c4c68051f771da0 (diff) | |
download | mana-ce60630c42e232bf81f22019e3499d6036a68f7e.tar.gz mana-ce60630c42e232bf81f22019e3499d6036a68f7e.tar.bz2 mana-ce60630c42e232bf81f22019e3499d6036a68f7e.tar.xz mana-ce60630c42e232bf81f22019e3499d6036a68f7e.zip |
Fixed crash on exit when CharCreateDialog is open
* Displayed Being was deleting its SpeechBubble after the
WindowContainer had already deleted it. Resolved by registering a
DeathListener.
* On dialog deletion, the CharHandler had become a roaming pointer but
was still accessed.
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/net.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/net/net.cpp b/src/net/net.cpp index dc86bc89..a2771244 100644 --- a/src/net/net.cpp +++ b/src/net/net.cpp @@ -176,11 +176,25 @@ void connectToServer(ServerInfo &server) void unload() { - if (generalHandler) - { - generalHandler->unload(); - delete generalHandler; - } + if (!generalHandler) + return; + + generalHandler->unload(); + delete generalHandler; + + adminHandler = nullptr; + charHandler = nullptr; + chatHandler = nullptr; + generalHandler = nullptr; + inventoryHandler = nullptr; + loginHandler = nullptr; + gameHandler = nullptr; + guildHandler = nullptr; + npcHandler = nullptr; + partyHandler = nullptr; + playerHandler = nullptr; + abilityHandler = nullptr; + tradeHandler = nullptr; } ServerType getNetworkType() |