erase() should really now set proper values to 0 after move

This commit is contained in:
Andrew Haynes
2026-05-05 10:34:35 -04:00
parent 5e9cce36a5
commit cbdcef91b9
5 changed files with 493 additions and 5 deletions
+6 -5
View File
@@ -126,7 +126,7 @@ at(const Vec8_t* vec, const int idx)
// - Result: a b \0 \0 g h i j (size=8, should be 7)
__attribute__((overloadable)) Vec8_t*
erase(Vec8_t* vec, const int iter) {
erase(Vec8_t* vec, const size_t iter) {
if(vec == nullptr) return nullptr;
if(vec->arr == nullptr) return nullptr;
if(iter >= vec->size) return nullptr;
@@ -137,13 +137,14 @@ erase(Vec8_t* vec, const int iter) {
}
__attribute__((overloadable)) Vec8_t*
erase(Vec8_t* vec, const int iter_start, const int iter_end) {
erase(Vec8_t* vec, const size_t iter_start, const size_t iter_end) {
if(vec == nullptr) return nullptr;
if(vec->arr == nullptr) return nullptr;
if(iter_start < 0 || iter_end > vec->size) return nullptr;
int diff = iter_end - iter_start;
if(iter_start < 0 || iter_end >= vec->size) return nullptr;
if(iter_start >= iter_end) return nullptr;
size_t diff = iter_end - iter_start;
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--) {
for(size_t i = vec->size - diff; i < vec->size; i++) {
vec->arr[i] = 0;
}
vec->size -= diff;