From 0e9c9ae4a70953f2e8471818bf4df53b84798743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Thu, 30 Dec 2021 19:58:33 +0100 Subject: [PATCH] fix: set enumerator level ReachedEnd to null if not known --- .../PacketStringEnumerator.cs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/Core/NosSmooth.Packets/PacketStringEnumerator.cs b/Core/NosSmooth.Packets/PacketStringEnumerator.cs index 9023335..2407544 100644 --- a/Core/NosSmooth.Packets/PacketStringEnumerator.cs +++ b/Core/NosSmooth.Packets/PacketStringEnumerator.cs @@ -208,9 +208,9 @@ public struct PacketStringEnumerator return cachedToken; } - if (_data.ReachedEnd || _currentLevel.ReachedEnd) + if (_data.ReachedEnd || (_currentLevel.ReachedEnd ?? false)) { - return new PacketEndReachedError(_data.Data, _currentLevel.ReachedEnd); + return new PacketEndReachedError(_data.Data, _currentLevel.ReachedEnd ?? false); } var currentIndex = _data.Cursor; @@ -259,9 +259,9 @@ public struct PacketStringEnumerator private void UpdateCurrentAndParentLevels(PacketToken token) { // If the token is last in the current level, then set reached end of the current level. - if (token.IsLast ?? false) + if (_currentLevel.ReachedEnd != true) { - _currentLevel.ReachedEnd = true; + _currentLevel.ReachedEnd = token.IsLast; } // IsLast is set if parent separator was encountered. The parent needs to be updated. @@ -298,7 +298,14 @@ public struct PacketStringEnumerator /// /// Whether the last token was read. Null if cannot determine (ie. there are multiple levels with the same separator.) public bool? IsOnLastToken() - => _data.ReachedEnd || _currentLevel.ReachedEnd; + { + if (_data.ReachedEnd) + { + return true; + } + + return _currentLevel.ReachedEnd; + } /// /// Checks if the given character is a separator. @@ -393,6 +400,6 @@ public struct PacketStringEnumerator public uint TokensRead { get; set; } - public bool ReachedEnd { get; set; } + public bool? ReachedEnd { get; set; } } } \ No newline at end of file -- 2.49.0