From 8c5aa78195fa185cd1d7898e2f81715e12398b58 Mon Sep 17 00:00:00 2001 From: Sara Date: Wed, 24 Jan 2024 23:59:40 +0100 Subject: [PATCH] fix: list now correctly inserts elements being inserted at len-1 ;-; pain --- core/src/list.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/list.c b/core/src/list.c index 3035375..1f92ba1 100644 --- a/core/src/list.c +++ b/core/src/list.c @@ -89,7 +89,7 @@ size_t list_add(List* self, void* item) { .as_void = self->data }; - uint8_t* into = data.as_byte + self->element_size * self->len; + uint8_t* into = data.as_byte + (self->element_size * self->len); memcpy(into, item, self->element_size); ++self->len; @@ -100,7 +100,7 @@ size_t list_add(List* self, void* item) { void list_insert(List* self, void* item, size_t at) { list_reserve(self, self->len + 1); - if(at == self->len - 1) { + if(at >= self->len) { list_add(self, item); return; } @@ -111,9 +111,9 @@ void list_insert(List* self, void* item, size_t at) { } data = { .as_void = self->data }; - uint8_t* from = data.as_byte + self->element_size * at; - uint8_t* into = data.as_byte + self->element_size * (at + 1); - uint8_t* end = data.as_byte + self->element_size * self->len; + uint8_t* from = data.as_byte + (self->element_size * at); + uint8_t* into = data.as_byte + (self->element_size * (at + 1)); + uint8_t* end = data.as_byte + (self->element_size * self->len); memmove(into, from, end - from); memcpy(from, item, self->element_size); ++self->len;