The check seems to have been assuming that rune comparisons are unsigned, but they're signed. This was causing an assertion failure for certain input characters (anything with an ASCII value less than '+'/43).
@@ -280,7 +280,7 @@ int_atoi :: proc(res: ^Int, input: string, radix := i8(10), allocator := context
}
pos := ch - '+'
- if RADIX_TABLE_REVERSE_SIZE <= pos {
+ if RADIX_TABLE_REVERSE_SIZE <= u32(pos) {
break
y := RADIX_TABLE_REVERSE[pos]