fix: list now correctly inserts elements being inserted at len-1

;-; pain
This commit is contained in:
Sara 2024-01-24 23:59:40 +01:00
parent 6f6cd9032f
commit 8c5aa78195

View file

@ -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;