From e8a8ca4e7aa8568973da4384005024de330eeef0 Mon Sep 17 00:00:00 2001 From: ORelio Date: Tue, 20 Oct 2015 22:54:58 +0200 Subject: [PATCH] Catch exception while moving cursor in ConsoleIO - ConsoleIO bug report by ibspa. - Also: NullReferenceException when closing connection --- MinecraftClient/ConsoleIO.cs | 33 ++++++++++++------- .../Protocol/Handlers/Protocol18.cs | 1 + 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/MinecraftClient/ConsoleIO.cs b/MinecraftClient/ConsoleIO.cs index 07c67719..65488382 100644 --- a/MinecraftClient/ConsoleIO.cs +++ b/MinecraftClient/ConsoleIO.cs @@ -338,15 +338,21 @@ namespace MinecraftClient { if (buffer.Length > 0) { - if (Console.CursorLeft == 0) + try { - Console.CursorLeft = Console.BufferWidth - 1; - Console.CursorTop--; - Console.Write(' '); - Console.CursorLeft = Console.BufferWidth - 1; - Console.CursorTop--; + if (Console.CursorLeft == 0) + { + Console.CursorLeft = Console.BufferWidth - 1; + if (Console.CursorTop > 0) + Console.CursorTop--; + Console.Write(' '); + Console.CursorLeft = Console.BufferWidth - 1; + if (Console.CursorTop > 0) + Console.CursorTop--; + } + else Console.Write("\b \b"); } - else Console.Write("\b \b"); + catch (ArgumentOutOfRangeException) { /* Console was resized!? */ } buffer = buffer.Substring(0, buffer.Length - 1); if (buffer2.Length > 0) @@ -358,12 +364,17 @@ namespace MinecraftClient } private static void GoBack() { - if (Console.CursorLeft == 0) + try { - Console.CursorLeft = Console.BufferWidth - 1; - Console.CursorTop--; + if (Console.CursorLeft == 0) + { + Console.CursorLeft = Console.BufferWidth - 1; + if (Console.CursorTop > 0) + Console.CursorTop--; + } + else Console.Write('\b'); } - else Console.Write('\b'); + catch (ArgumentOutOfRangeException) { /* Console was resized!? */ } } private static void GoLeft() { diff --git a/MinecraftClient/Protocol/Handlers/Protocol18.cs b/MinecraftClient/Protocol/Handlers/Protocol18.cs index 8fac698e..f5fe4071 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol18.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol18.cs @@ -85,6 +85,7 @@ namespace MinecraftClient.Protocol.Handlers } } catch (SocketException) { return false; } + catch (NullReferenceException) { return false; } return true; }