diff --git a/src/base/array/array.c b/src/base/array/array.c index 79f070d..311b07d 100644 --- a/src/base/array/array.c +++ b/src/base/array/array.c @@ -204,11 +204,15 @@ void arrayRemoveSwapEnd(WpArray array, u64 index, u64 item_size) { if (header->count == 0 || index > header->count) { return; } u64 last_item_index = header->count - 1; - void *cur_item = arrayGetItemWithOffset(array, header->item_size * index); - void *last_item = arrayGetItemWithOffset(array, header->item_size * last_item_index); - memcpy(cur_item, last_item, header->item_size); - memset(last_item, 0, header->item_size); + if (index < last_item_index) { + void *cur_item = arrayGetItemWithOffset(array, header->item_size * index); + void *last_item = arrayGetItemWithOffset(array, header->item_size * last_item_index); + + memcpy(cur_item, last_item, header->item_size); + memset(last_item, 0, header->item_size); + } + --(header->count); }