1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-14 14:24:10 +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

@ -94,6 +94,7 @@ namespace System
if (val.IsEmpty)
return .Err(.NoValue);
bool digitsFound = false;
uint64 result = 0;
uint64 prevResult = 0;
@ -107,6 +108,7 @@ namespace System
{
result &*= radix;
result &+= (uint64)(c - '0');
digitsFound = true;
}
else if ((c >= 'a') && (c <= 'f'))
{
@ -114,6 +116,7 @@ namespace System
return .Err(.InvalidChar(result));
result &*= radix;
result &+= (uint64)(c - 'a' + 10);
digitsFound = true;
}
else if ((c >= 'A') && (c <= 'F'))
{
@ -121,12 +124,14 @@ namespace System
return .Err(.InvalidChar(result));
result &*= radix;
result &+= (uint64)(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 == '\'')
{
@ -144,6 +149,9 @@ namespace System
prevResult = result;
}
if (!digitsFound)
return .Err(.NoValue);
return result;
}