Browse Source

[math/big] Return 0, .Integer_Underflow if trying to get a negative number to an unsigned int.

Jeroen van Rijn 3 years ago
parent
commit
b2b79b86f0
1 changed files with 5 additions and 0 deletions
  1. 5 0
      core/math/big/internal.odin

+ 5 - 0
core/math/big/internal.odin

@@ -2332,7 +2332,12 @@ internal_int_get :: proc(a: ^Int, $T: typeid) -> (res: T, err: Error) where intr
 		if a.sign == .Zero_or_Positive {
 		if a.sign == .Zero_or_Positive {
 			target_bit_size -= 1
 			target_bit_size -= 1
 		}
 		}
+	} else {
+		if a.sign == .Negative {
+			return 0, .Integer_Underflow
+		}
 	}
 	}
+
 	bits_used := internal_count_bits(a)
 	bits_used := internal_count_bits(a)
 
 
 	if bits_used > target_bit_size {
 	if bits_used > target_bit_size {