CborWriter.Reset does not clear _currentIndefiniteLengthStringRanges.
A writer that is in convertIndefiniteLengthEncodings mode and has Reset called mid indefinite length encoding will improperly patch the next block of indefinite length encoding when trying to re-encode it as a definite length encoding.
using System.Formats.Cbor;
void Main()
{
CborWriter writer = new(convertIndefiniteLengthEncodings: true);
// BEGIN
writer.WriteStartIndefiniteLengthByteString();
writer.WriteByteString([1, 2, 3]);
writer.Reset();
// END
writer.WriteStartIndefiniteLengthByteString();
writer.WriteByteString([1, 2, 3]);
writer.WriteEndIndefiniteLengthByteString();
byte[] encoded = writer.Encode();
Console.WriteLine(Convert.ToHexString(encoded));
}
This will throw for WriteEndIndefiniteLengthByteString. However, if the contents between BEGIN and END are removed entirely, then it will correctly encode.