aboutsummaryrefslogtreecommitdiff
path: root/src/stdlib/lists.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-04-16 00:09:57 -0400
committerBruce Hill <bruce@bruce-hill.com>2025-04-16 00:09:57 -0400
commita2d2916e3220ec333122afb9cdef0f5c1eda84f7 (patch)
treed06b95f8d7bec5439eb804a3ff3045907a218d31 /src/stdlib/lists.c
parente5420471a7364a92521575e7abd3a29a9318001b (diff)
Fixes to get the compiler to build with -O3
Diffstat (limited to 'src/stdlib/lists.c')
-rw-r--r--src/stdlib/lists.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/stdlib/lists.c b/src/stdlib/lists.c
index af0d1e0a..f5be09e9 100644
--- a/src/stdlib/lists.c
+++ b/src/stdlib/lists.c
@@ -76,11 +76,15 @@ public void List$insert(List_t *list, const void *item, Int_t int_index, int64_t
list->data_refcount = 0;
list->stride = padded_item_size;
} else {
- if (index != list->length+1)
+ if (index != list->length+1) {
+ assert(list->length >= index);
+ size_t size = (size_t)((list->length - index + 1)*padded_item_size);
+ assert(size < SIZE_MAX);
memmove(
list->data + index*padded_item_size,
list->data + (index-1)*padded_item_size,
- (size_t)((list->length - index + 1)*padded_item_size));
+ size);
+ }
}
assert(list->free > 0);
--list->free;