From: Skgland Date: Mon, 8 Dec 2025 18:59:43 +0000 (+0100) Subject: fix another integer overflow X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=616f071cd93b2e6061878a7a581787a861cb2429;p=scryer-prolog.git fix another integer overflow --- diff --git a/src/machine/heap.rs b/src/machine/heap.rs index c93d005b..d8c52ac8 100644 --- a/src/machine/heap.rs +++ b/src/machine/heap.rs @@ -1148,7 +1148,9 @@ pub fn sized_iter_to_heap_list>( ) -> Result { if size > 0 { let h = heap.cell_len(); - let mut writer = heap.reserve(1 + 2 * size)?; + // not using checked_add for 1 + as the result of multiplying by 2 will be even and the largest representable usize is odd, + // so the addition cannot overflow + let mut writer = heap.reserve(1 + size.checked_mul(2).ok_or(AllocError)?)?; writer.write_with(|section| { for (idx, value) in values.enumerate() {