Fix invalid read
This commit is contained in:
@@ -79,8 +79,10 @@ i32 _bzArrayIns(void *arr, i32 idx) {
|
||||
BZ_ASSERT(idx >= 0 && idx <= head->size);
|
||||
BZ_ASSERT(head->size + 1 <= head->capacity);
|
||||
|
||||
bzMemMove((u8 *) arr + (idx + 1) * head->stride,
|
||||
(u8 *) arr + idx * head->stride, head->stride);
|
||||
if (idx != head->size) {
|
||||
bzMemMove((u8 *) arr + (idx + 1) * head->stride,
|
||||
(u8 *) arr + idx * head->stride, head->stride);
|
||||
}
|
||||
head->size++;
|
||||
return idx;
|
||||
}
|
||||
|
||||
@@ -38,10 +38,18 @@ int main(void) {
|
||||
bzArrayPush(arr, 2);
|
||||
bzArrayPush(arr, 3);
|
||||
bzArrayPush(arr, 4);
|
||||
for (j = 0; j < bzArraySize(arr); j++) {
|
||||
printf("%d ", bzArrayGet(arr, j));
|
||||
}
|
||||
printf("\n");
|
||||
bzArrayIns(arr, i, 5);
|
||||
BZ_ASSERT(arr[i] == 5);
|
||||
for (j = 0; j < bzArraySize(arr); j++) {
|
||||
printf("%d ", bzArrayGet(arr, j));
|
||||
}
|
||||
printf("\n\n");
|
||||
if (i < 4)
|
||||
BZ_ASSERT(arr[4] == 4);
|
||||
BZ_ASSERT(bzArrayGet(arr, 4) == 4);
|
||||
bzArrayFree(arr);
|
||||
arr = bzArrayNew(int, 5);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user