From ce60630c42e232bf81f22019e3499d6036a68f7e Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Tue, 1 Apr 2025 11:40:37 +0200 Subject: 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. --- src/net/net.cpp | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'src/net') 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() -- cgit v1.2.3-70-g09d2