diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-04-16 00:09:57 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-04-16 00:09:57 -0400 |
| commit | a2d2916e3220ec333122afb9cdef0f5c1eda84f7 (patch) | |
| tree | d06b95f8d7bec5439eb804a3ff3045907a218d31 /src/stdlib | |
| parent | e5420471a7364a92521575e7abd3a29a9318001b (diff) | |
Fixes to get the compiler to build with -O3
Diffstat (limited to 'src/stdlib')
| -rw-r--r-- | src/stdlib/lists.c | 8 | ||||
| -rw-r--r-- | src/stdlib/tables.c | 2 |
2 files changed, 7 insertions, 3 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; diff --git a/src/stdlib/tables.c b/src/stdlib/tables.c index c01ac25e..c26fd798 100644 --- a/src/stdlib/tables.c +++ b/src/stdlib/tables.c @@ -556,7 +556,7 @@ PUREFUNC public uint64_t Table$hash(const void *obj, const TypeInfo_t *type) keys_hash ^= generic_hash(t->entries.data + i*t->entries.stride, table.key); } - struct { + volatile struct { int64_t length; uint64_t keys_hash, values_hash; Table_t *fallback; |
