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(idx >= 0 && idx <= head->size);
|
||||||
BZ_ASSERT(head->size + 1 <= head->capacity);
|
BZ_ASSERT(head->size + 1 <= head->capacity);
|
||||||
|
|
||||||
|
if (idx != head->size) {
|
||||||
bzMemMove((u8 *) arr + (idx + 1) * head->stride,
|
bzMemMove((u8 *) arr + (idx + 1) * head->stride,
|
||||||
(u8 *) arr + idx * head->stride, head->stride);
|
(u8 *) arr + idx * head->stride, head->stride);
|
||||||
|
}
|
||||||
head->size++;
|
head->size++;
|
||||||
return idx;
|
return idx;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,10 +38,18 @@ int main(void) {
|
|||||||
bzArrayPush(arr, 2);
|
bzArrayPush(arr, 2);
|
||||||
bzArrayPush(arr, 3);
|
bzArrayPush(arr, 3);
|
||||||
bzArrayPush(arr, 4);
|
bzArrayPush(arr, 4);
|
||||||
|
for (j = 0; j < bzArraySize(arr); j++) {
|
||||||
|
printf("%d ", bzArrayGet(arr, j));
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
bzArrayIns(arr, i, 5);
|
bzArrayIns(arr, i, 5);
|
||||||
BZ_ASSERT(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)
|
if (i < 4)
|
||||||
BZ_ASSERT(arr[4] == 4);
|
BZ_ASSERT(bzArrayGet(arr, 4) == 4);
|
||||||
bzArrayFree(arr);
|
bzArrayFree(arr);
|
||||||
arr = bzArrayNew(int, 5);
|
arr = bzArrayNew(int, 5);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user