1
0
mirror of https://github.com/janet-lang/janet synced 2025-04-11 01:36:38 +00:00

Fix #1546 - large ranges.

Raise an error for very large ranges instead of internal assert.
This commit is contained in:
Calvin Rose 2025-01-20 09:02:22 -06:00
parent 2b49903c82
commit 06d581dde3
2 changed files with 3 additions and 1 deletions

View File

@ -449,8 +449,9 @@ JANET_CORE_FN(janet_core_range,
}
count = (count > 0) ? count : 0;
int32_t int_count;
janet_assert(count >= 0, "bad range code");
if (count > (double) INT32_MAX) {
int_count = INT32_MAX;
janet_panicf("range is too large, %f elements", count);
} else {
int_count = (int32_t) ceil(count);
}

View File

@ -174,6 +174,7 @@
(assert (deep= (range 0 17 4) @[0 4 8 12 16]) "(range 0 17 4)")
(assert (deep= (range 16 0 -4) @[16 12 8 4]) "(range 16 0 -4)")
(assert (deep= (range 17 0 -4) @[17 13 9 5 1]) "(range 17 0 -4)")
(assert-error "large range" (range 0xFFFFFFFFFF))
(assert (= (length (range 10)) 10) "(range 10)")
(assert (= (length (range -10)) 0) "(range -10)")