erase() should properly set values to 0 after move

This commit is contained in:
Andrew Haynes
2026-05-05 09:23:25 -04:00
parent aa73e213ef
commit 5e9cce36a5
4 changed files with 132 additions and 189 deletions
+5 -5
View File
@@ -130,8 +130,8 @@ erase(Vec8_t* vec, const int iter) {
if(vec == nullptr) return nullptr;
if(vec->arr == nullptr) return nullptr;
if(iter >= vec->size) return nullptr;
vec->arr[iter] = 0;
memmove(&vec->arr[iter], &vec->arr[iter + 1], (vec->size - iter - 1) * sizeof(char));
vec->arr[vec->size - 1] = 0;
vec->size--;
return vec;
}
@@ -140,12 +140,12 @@ __attribute__((overloadable)) Vec8_t*
erase(Vec8_t* vec, const int iter_start, const int iter_end) {
if(vec == nullptr) return nullptr;
if(vec->arr == nullptr) return nullptr;
if(iter_start < 0 || iter_end >= vec->size) return nullptr;
if(iter_start < 0 || iter_end > vec->size) return nullptr;
int diff = iter_end - iter_start;
for(int i = 0; i < diff; i++) {
vec->arr[iter_start + i] = 0;
memmove(&vec->arr[iter_start], &vec->arr[iter_end], (vec->size - iter_end) * sizeof(char));
for(size_t i = vec->size; i > iter_end; i--) {
vec->arr[i] = 0;
}
memmove(&vec->arr[iter_start], &vec->arr[iter_end + 1], (vec->size - diff - 1) * sizeof(char));
vec->size -= diff;
return vec;
}