From 8da18774f0212ffeb4e68b76e9d18e6586118c73 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Mon, 21 Sep 2026 22:03:40 +0100 Subject: [PATCH] Update array remove swap to handle deleting last index --- src/base/array/array.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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); }