From e82bbdc879eeb4289fd1ff0e8ffcbdd8a7537e99 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 13 May 2025 12:32:15 -0400 Subject: [PATCH] Fix subtle number parsing bug --- SabreTools.Core/Tools/NumberHelper.cs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/SabreTools.Core/Tools/NumberHelper.cs b/SabreTools.Core/Tools/NumberHelper.cs index 60063bcc..1dd885e3 100644 --- a/SabreTools.Core/Tools/NumberHelper.cs +++ b/SabreTools.Core/Tools/NumberHelper.cs @@ -65,21 +65,23 @@ namespace SabreTools.Core.Tools // Normalize the string for easier comparison numeric = numeric!.ToLowerInvariant(); - // Get the multiplication modifier and trim characters - long multiplier = DetermineMultiplier(numeric); - numeric = numeric.TrimEnd(['k', 'm', 'g', 't', 'p', 'e', 'z', 'y', 'i', 'b', ' ']); - // Parse the numeric string, if possible - long value; if (numeric.StartsWith("0x")) - value = Convert.ToInt64(numeric, 16); - else if (long.TryParse(numeric, out long longValue)) - value = longValue; + { + return Convert.ToInt64(numeric.Substring(2), 16); + } else - return null; + { + // Get the multiplication modifier and trim characters + long multiplier = DetermineMultiplier(numeric); + numeric = numeric.TrimEnd(['k', 'm', 'g', 't', 'p', 'e', 'z', 'y', 'i', 'b', ' ']); - // Apply the multiplier and return - return value * multiplier; + // Apply the multiplier and return + if (!long.TryParse(numeric, out long longValue)) + return null; + + return longValue * multiplier; + } } ///