- String.to_integer does not correctly return in some cases where it should #2590.

This commit is contained in:
Christoffer Lerno
2025-11-24 12:46:31 +01:00
parent 5c1a6d7623
commit 887ed5b9e9
3 changed files with 45 additions and 6 deletions

View File

@@ -1067,14 +1067,10 @@ macro String.to_integer(self, $Type, int base = 10)
{
if (is_negative)
{
$Type new_value = value * base_used - c;
if (new_value > value) return INTEGER_OVERFLOW?;
value = new_value;
value = value.overflow_mul(base_used).overflow_sub(c) ?? INTEGER_OVERFLOW?!;
break;
}
$Type new_value = value * base_used + c;
if (new_value < value) return INTEGER_OVERFLOW?;
value = new_value;
value = value.overflow_mul(base_used).overflow_add(c) ?? INTEGER_OVERFLOW?!;
};
}
return value;