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:
parent
2b49903c82
commit
06d581dde3
@ -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);
|
||||
}
|
||||
|
@ -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)")
|
||||
|
Loading…
x
Reference in New Issue
Block a user