From 6d9eb1c54dbcc7c6bde3017d666cec74141ba4ae Mon Sep 17 00:00:00 2001 From: Art Leonard Date: Fri, 17 Jul 2026 12:29:28 -0700 Subject: [PATCH] Defer CBOR reader map key tracking Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d9c75d62-dda8-4115-be1b-ef2f101a6d61 --- .../System/Formats/Cbor/Reader/CborReader.Map.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Formats.Cbor/src/System/Formats/Cbor/Reader/CborReader.Map.cs b/src/libraries/System.Formats.Cbor/src/System/Formats/Cbor/Reader/CborReader.Map.cs index 1ca66a0537015a..e5dd5aced4bf1f 100644 --- a/src/libraries/System.Formats.Cbor/src/System/Formats/Cbor/Reader/CborReader.Map.cs +++ b/src/libraries/System.Formats.Cbor/src/System/Formats/Cbor/Reader/CborReader.Map.cs @@ -160,7 +160,18 @@ private void ValidateKeyUniqueness((int Offset, int Length) currentKeyEncodingRa { Debug.Assert(_currentKeyOffset != null); - HashSet<(int Offset, int Length)> keyEncodingRanges = GetKeyEncodingRanges(); + HashSet<(int Offset, int Length)>? keyEncodingRanges = _keyEncodingRanges; + if (keyEncodingRanges is null) + { + if (_previousKeyEncodingRange is null) + { + _previousKeyEncodingRange = currentKeyEncodingRange; + return; + } + + keyEncodingRanges = GetKeyEncodingRanges(); + keyEncodingRanges.Add(_previousKeyEncodingRange.Value); + } if (!keyEncodingRanges.Add(currentKeyEncodingRange)) {