From 1633e68b76ef859286c26387746e09360ffb3cac Mon Sep 17 00:00:00 2001 From: Haselnussbomber Date: Tue, 23 Sep 2025 13:16:39 +0200 Subject: [PATCH] Fix/simplify range handling --- Dalamud/Game/Text/Evaluator/SeStringEvaluator.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Dalamud/Game/Text/Evaluator/SeStringEvaluator.cs b/Dalamud/Game/Text/Evaluator/SeStringEvaluator.cs index 4fd42efb3..9f898bcca 100644 --- a/Dalamud/Game/Text/Evaluator/SeStringEvaluator.cs +++ b/Dalamud/Game/Text/Evaluator/SeStringEvaluator.cs @@ -1643,13 +1643,15 @@ internal class SeStringEvaluator : IServiceType, ISeStringEvaluator if (entryEnd == -1) entryEnd = ranges.Length; + var entry = ranges.AsSpan(0, entryEnd); + if (ranges.StartsWith("noun", StringComparison.Ordinal)) { isNoun = true; } else if (ranges.StartsWith("col", StringComparison.Ordinal) && colIndex < cols.Length) { - cols[colIndex++] = int.Parse(ranges.AsSpan(4, entryEnd - 4)); + cols[colIndex++] = int.Parse(entry[4..]); } else if (ranges.StartsWith("tail", StringComparison.Ordinal)) { @@ -1659,18 +1661,18 @@ internal class SeStringEvaluator : IServiceType, ISeStringEvaluator } else { - var dash = ranges.IndexOf('-'); + var dash = entry.IndexOf('-'); hasRanges |= true; if (dash == -1) { - isInRange |= int.Parse(ranges.AsSpan(0, entryEnd)) == rowId; + isInRange |= int.Parse(entry) == rowId; } else { - isInRange |= rowId >= int.Parse(ranges.AsSpan(0, dash)) - && rowId <= int.Parse(ranges.AsSpan(dash + 1, entryEnd - dash - 1)); + isInRange |= rowId >= int.Parse(entry[..dash]) + && rowId <= int.Parse(entry[(dash + 1)..]); } }