diff options
| author | blob1807 <12388588+blob1807@users.noreply.github.com> | 2025-12-15 20:50:45 +1000 |
|---|---|---|
| committer | blob1807 <12388588+blob1807@users.noreply.github.com> | 2025-12-15 21:00:27 +1000 |
| commit | cbe164c596b693bd347c8f3e3182a4f1320b1fad (patch) | |
| tree | c645a1cc86804c0243dbd2fd94e26ae7c1075aee /base/runtime/print.odin | |
| parent | 7d46684030d216f6862c6df0afc3d8371c533b88 (diff) | |
`print_i64` fix getting an OOB index
fixes https://github.com/odin-lang/Odin/issues/6018
Diffstat (limited to 'base/runtime/print.odin')
| -rw-r--r-- | base/runtime/print.odin | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/base/runtime/print.odin b/base/runtime/print.odin index 90119c699..4ef142037 100644 --- a/base/runtime/print.odin +++ b/base/runtime/print.odin @@ -184,10 +184,11 @@ print_rune :: #force_no_inline proc "contextless" (r: rune) -> int #no_bounds_ch print_u64 :: #force_no_inline proc "contextless" (x: u64) #no_bounds_check { + b :: u64(10) + u := x + a: [129]byte i := len(a) - b := u64(10) - u := x for u >= b { i -= 1; a[i] = _INTEGER_DIGITS_VAR[u % b] u /= b @@ -199,11 +200,9 @@ print_u64 :: #force_no_inline proc "contextless" (x: u64) #no_bounds_check { print_i64 :: #force_no_inline proc "contextless" (x: i64) #no_bounds_check { - b :: i64(10) - - u := x - neg := u < 0 - u = abs(u) + b :: u64(10) + u := u64(abs(x)) + neg := x < 0 a: [129]byte i := len(a) |