fix: list now correctly inserts elements being inserted at len-1
;-; pain
This commit is contained in:
parent
6f6cd9032f
commit
8c5aa78195
|
@ -89,7 +89,7 @@ size_t list_add(List* self, void* item) {
|
||||||
.as_void = self->data
|
.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);
|
memcpy(into, item, self->element_size);
|
||||||
++self->len;
|
++self->len;
|
||||||
|
@ -100,7 +100,7 @@ size_t list_add(List* self, void* item) {
|
||||||
void list_insert(List* self, void* item, size_t at) {
|
void list_insert(List* self, void* item, size_t at) {
|
||||||
list_reserve(self, self->len + 1);
|
list_reserve(self, self->len + 1);
|
||||||
|
|
||||||
if(at == self->len - 1) {
|
if(at >= self->len) {
|
||||||
list_add(self, item);
|
list_add(self, item);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -111,9 +111,9 @@ void list_insert(List* self, void* item, size_t at) {
|
||||||
} data = {
|
} data = {
|
||||||
.as_void = self->data
|
.as_void = self->data
|
||||||
};
|
};
|
||||||
uint8_t* from = data.as_byte + self->element_size * at;
|
uint8_t* from = data.as_byte + (self->element_size * at);
|
||||||
uint8_t* into = data.as_byte + self->element_size * (at + 1);
|
uint8_t* into = data.as_byte + (self->element_size * (at + 1));
|
||||||
uint8_t* end = data.as_byte + self->element_size * self->len;
|
uint8_t* end = data.as_byte + (self->element_size * self->len);
|
||||||
memmove(into, from, end - from);
|
memmove(into, from, end - from);
|
||||||
memcpy(from, item, self->element_size);
|
memcpy(from, item, self->element_size);
|
||||||
++self->len;
|
++self->len;
|
||||||
|
|
Loading…
Reference in a new issue