Fixed uiprivArray/testingprivArray bugs that led to the crash. Now to fix up the rest of the code.

This commit is contained in:
Pietro Gagliardi 2019-05-20 11:12:16 -04:00
parent a4c6817d33
commit 9f0bb3aacb
2 changed files with 5 additions and 3 deletions

View File

@ -51,7 +51,6 @@ void *uiprivArrayInsertAt(uiprivArray *arr, size_t pos, size_t n)
arr->what); arr->what);
arr->cap += nGrow; arr->cap += nGrow;
} }
arr->len += n;
nBytesRemaining = (arr->len - pos) * arr->elemsize; nBytesRemaining = (arr->len - pos) * arr->elemsize;
nBytesAdded = n * arr->elemsize; nBytesAdded = n * arr->elemsize;
@ -59,6 +58,8 @@ void *uiprivArrayInsertAt(uiprivArray *arr, size_t pos, size_t n)
old = new + nBytesAdded; old = new + nBytesAdded;
memmove(old, new, nBytesRemaining); memmove(old, new, nBytesRemaining);
memset(new, 0, nBytesAdded); memset(new, 0, nBytesAdded);
arr->len += n;
return new; return new;
} }

View File

@ -64,7 +64,6 @@ void *testingprivArrayInsertAt(testingprivArray *arr, size_t pos, size_t n)
arr->what); arr->what);
arr->cap += nGrow; arr->cap += nGrow;
} }
arr->len += n;
nBytesRemaining = (arr->len - pos) * arr->elemsize; nBytesRemaining = (arr->len - pos) * arr->elemsize;
nBytesAdded = n * arr->elemsize; nBytesAdded = n * arr->elemsize;
@ -72,6 +71,8 @@ void *testingprivArrayInsertAt(testingprivArray *arr, size_t pos, size_t n)
old = new + nBytesAdded; old = new + nBytesAdded;
memmove(old, new, nBytesRemaining); memmove(old, new, nBytesRemaining);
memset(new, 0, nBytesAdded); memset(new, 0, nBytesAdded);
arr->len += n;
return new; return new;
} }
@ -195,7 +196,7 @@ void testingprivOutbufVprintf(testingprivOutbuf *o, const char *fmt, va_list ap)
return; return;
} }
va_copy(ap2, ap); va_copy(ap2, ap);
n = testingprivVsnprintf(NULL, 0, fmt, ap); n = testingprivVsnprintf(NULL, 0, fmt, ap2);
va_end(ap2); va_end(ap2);
// To conserve memory, we only allocate the terminating NUL once. // To conserve memory, we only allocate the terminating NUL once.
if (o->buf.len == 0) if (o->buf.len == 0)