1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-28 04:28:01 +02:00

Bugfixes for number parsing

This commit is contained in:
Ron Zuckerman 2024-01-14 17:06:43 -06:00
parent d5c336ffab
commit 8bd12814b8
No known key found for this signature in database
GPG key ID: 7EC17CB87028ABF8
11 changed files with 169 additions and 1 deletions

View file

@ -82,6 +82,7 @@ namespace System
if (val.IsEmpty)
return .Err(.NoValue);
bool digitsFound = false;
uint16 result = 0;
uint16 prevResult = 0;
@ -95,6 +96,7 @@ namespace System
{
result &*= radix;
result &+= (uint16)(c - '0');
digitsFound = true;
}
else if ((c >= 'a') && (c <= 'f'))
{
@ -102,6 +104,7 @@ namespace System
return .Err(.InvalidChar(result));
result &*= radix;
result &+= (uint16)(c - 'a' + 10);
digitsFound = true;
}
else if ((c >= 'A') && (c <= 'F'))
{
@ -109,12 +112,14 @@ namespace System
return .Err(.InvalidChar(result));
result &*= radix;
result &+= (uint16)(c - 'A' + 10);
digitsFound = true;
}
else if ((c == 'X') || (c == 'x'))
{
if ((!style.HasFlag(.AllowHexSpecifier)) || (i == 0) || (result != 0))
return .Err(.InvalidChar(result));
radix = 0x10;
digitsFound = false;
}
else if (c == '\'')
{
@ -132,6 +137,9 @@ namespace System
prevResult = result;
}
if (!digitsFound)
return .Err(.NoValue);
return result;
}