From 7db39d73eebb2f2c1eae852e7ca81d1ba10452fb Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sat, 28 Apr 2018 08:44:25 +1000 Subject: [PATCH] Fix crash when failing to connect to server --- ClassicalSharp/Network/NetworkProcessor.cs | 18 ++++++++++-------- src/Client/WinErrorHandler.c | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/ClassicalSharp/Network/NetworkProcessor.cs b/ClassicalSharp/Network/NetworkProcessor.cs index 4d1fc8d6a..adaaa0b31 100644 --- a/ClassicalSharp/Network/NetworkProcessor.cs +++ b/ClassicalSharp/Network/NetworkProcessor.cs @@ -59,7 +59,7 @@ namespace ClassicalSharp.Network { cpe = new CPEProtocol(game); cpeBlockDefs = new CPEProtocolBlockDefs(game); wom = new WoMProtocol(game); - ResetProtocols(); + ResetState(); classic.WriteLogin(game.Username, game.Mppass); SendPacket(); @@ -190,21 +190,22 @@ namespace ClassicalSharp.Network { packetSizes[i] = 0; } - reader.ExtendedPositions = false; reader.ExtendedBlocks = false; - writer.ExtendedPositions = false; writer.ExtendedBlocks = false; - BlockInfo.SetMaxUsed(255); - - ResetProtocols(); - cpeData.Reset(); + BlockInfo.SetMaxUsed(255); + ResetState(); Dispose(); } - void ResetProtocols() { + void ResetState() { if (classic == null) return; // null if no successful connection ever made before + + cpeData.Reset(); classic.Reset(); cpe.Reset(); cpeBlockDefs.Reset(); wom.Reset(); + + reader.ExtendedPositions = false; reader.ExtendedBlocks = false; + writer.ExtendedPositions = false; writer.ExtendedBlocks = false; } internal Action[] handlers = new Action[256]; @@ -225,6 +226,7 @@ namespace ClassicalSharp.Network { public override void OnNewMap(Game game) { // wipe all existing entity states + if (classic == null) return; for (int i = 0; i < EntityList.MaxCount; i++) { classic.RemoveEntity((byte)i); } diff --git a/src/Client/WinErrorHandler.c b/src/Client/WinErrorHandler.c index 4a6505566..39e979fdd 100644 --- a/src/Client/WinErrorHandler.c +++ b/src/Client/WinErrorHandler.c @@ -21,7 +21,7 @@ String_AppendConst(&logMsg, "\r\n"); String_AppendConst(&logMsg, "Please report the crash to github.com/UnknownShadow200/ClassicalSharp/issues so we can fix it."); LONG WINAPI ErrorHandler_UnhandledFilter(struct _EXCEPTION_POINTERS* pInfo) { - //pInfo->ExceptionRecord-> + pInfo->ExceptionRecord-> return EXCEPTION_EXECUTE_HANDLER; }