-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Closed
Labels
area-System.MemorydocumentationDocumentation bug or enhancement, does not impact product or test codeDocumentation bug or enhancement, does not impact product or test codein-prThere is an active PR which will close this issue when it is mergedThere is an active PR which will close this issue when it is merged
Milestone
Description
Description
The current implementation of Utf8Parser.TryParse
for bool ignores the format:
Lines 29 to 58 in beac274
public static bool TryParse(ReadOnlySpan<byte> source, out bool value, out int bytesConsumed, char standardFormat = default) | |
{ | |
if (!(standardFormat == default(char) || standardFormat == 'G' || standardFormat == 'l')) | |
ThrowHelper.ThrowFormatException_BadFormatSpecifier(); | |
if (source.Length >= 4) | |
{ | |
int dw = BinaryPrimitives.ReadInt32LittleEndian(source) & ~0x20202020; | |
if (dw == 0x45555254 /* 'EURT' */) | |
{ | |
bytesConsumed = 4; | |
value = true; | |
return true; | |
} | |
if (source.Length > 4) | |
{ | |
if (dw == 0x534c4146 /* 'SLAF' */ && (source[4] & ~0x20) == 'E') | |
{ | |
bytesConsumed = 5; | |
value = false; | |
return true; | |
} | |
} | |
} | |
bytesConsumed = 0; | |
value = default; | |
return false; | |
} |
Reproduction Steps
byte[] bytes = Encoding.UTF8.GetBytes("true");
var result = Utf8Parser.TryParse(bytes, out bool value, out int byteConsumed, standardFormat: 'G');
Console.WriteLine(result);
Expected behavior
result
should be false
because for the format G
, True
or False
beginning with uppercase are expected.
Actual behavior
result
is true
.
Regression?
I don't think so. In dotnet/corefx, the implementation already didn't take the format into account.
Known Workarounds
No response
Configuration
9.0.0-preview.2.24128.5
Other information
No response
Metadata
Metadata
Assignees
Labels
area-System.MemorydocumentationDocumentation bug or enhancement, does not impact product or test codeDocumentation bug or enhancement, does not impact product or test codein-prThere is an active PR which will close this issue when it is mergedThere is an active PR which will close this issue when it is merged