From e7bd09b8b0a779b42cdcc0d580a03e52057854b1 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Fri, 4 May 2018 17:53:54 +1000 Subject: [PATCH] Fix crashing when /tp ing to extremely large positions (Thanks cybertoon) --- ClassicalSharp/2D/Utils/TextAtlas.cs | 2 +- ClassicalSharp/Utils/StringBuffer.cs | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ClassicalSharp/2D/Utils/TextAtlas.cs b/ClassicalSharp/2D/Utils/TextAtlas.cs index 327359bc0..39849c546 100644 --- a/ClassicalSharp/2D/Utils/TextAtlas.cs +++ b/ClassicalSharp/2D/Utils/TextAtlas.cs @@ -67,7 +67,7 @@ namespace ClassicalSharp { } char[] digits = StringBuffer.numBuffer; - int count = StringBuffer.MakeNum(value); + int count = StringBuffer.MakeNum((uint)value); for (int i = count - 1; i >= 0; i--) { Add(digits[i] - '0', vertices, ref index); } diff --git a/ClassicalSharp/Utils/StringBuffer.cs b/ClassicalSharp/Utils/StringBuffer.cs index 6c6a7bf56..229954d23 100644 --- a/ClassicalSharp/Utils/StringBuffer.cs +++ b/ClassicalSharp/Utils/StringBuffer.cs @@ -37,7 +37,7 @@ namespace ClassicalSharp { } internal static char[] numBuffer = new char[20]; - internal static int MakeNum(int num) { + internal static int MakeNum(uint num) { int len = 0; do { numBuffer[len] = (char)('0' + (num % 10)); @@ -47,7 +47,8 @@ namespace ClassicalSharp { } public StringBuffer AppendNum(int num) { - int numLen = MakeNum(num); + if (num < 0) { Append('-'); num = -num; } + int numLen = MakeNum((uint)num); for (int i = numLen - 1; i >= 0; i--) value[Length++] = numBuffer[i]; return this; @@ -56,7 +57,7 @@ namespace ClassicalSharp { public StringBuffer AppendPaddedNum(int minDigits, int num) { for (int i = 0; i < minDigits; i++) numBuffer[i] = '0'; - int numLen = Math.Max(minDigits, MakeNum(num)); + int numLen = Math.Max(minDigits, MakeNum((uint)num)); for (int i = numLen - 1; i >= 0; i--) value[Length++] = numBuffer[i]; return this;