Fix bigint hex parsing #1945.

This commit is contained in:
Christoffer Lerno
2025-02-08 19:06:06 +01:00
parent c8e671d34b
commit 68b5c1e1f1
3 changed files with 9 additions and 2 deletions

View File

@@ -92,9 +92,9 @@ fn BigInt*! BigInt.init_string_radix(&self, String value, int radix)
case '0'..'9':
pos_val -= '0';
case 'A'..'Z':
pos_val -= 'A' + 10;
pos_val -= 'A' - 10;
case 'a'..'z':
pos_val -= 'a' + 10;
pos_val -= 'a' - 10;
default:
return NumberConversion.MALFORMED_INTEGER?;
}

View File

@@ -49,6 +49,7 @@
- Allow function types to have a calling convention. #1938
- Issue with defer copying when triggered by break or continue #1936.
- Assert when using optional as init or inc part in a for loop #1942.
- Fix bigint hex parsing #1945.
### Stdlib changes
- Added '%h' and '%H' for printing out binary data in hexadecimal using the formatter.

View File

@@ -1,5 +1,11 @@
module std::math::bigint @test;
fn void test_parse16()
{
BigInt bi @noinit;
assert(bi.init_string_radix("c", 16)!!.equals(bigint::from_int(12)));
}
fn void test_plus()
{
BigInt a = bigint::from_int(123);