Bug 475498 - Add reallocarray wrapper
[valgrind.git] / memcheck / tests / amd64-freebsd / reallocarray.c
blobee3a94d879148ebeb657731d3f5828f05cbc8629
1 #include <stdlib.h>
2 #include <assert.h>
3 #include <errno.h>
4 #include <stdint.h>
5 #include "../../memcheck.h"
7 int main(void)
9 int *pi = NULL;
10 VALGRIND_DO_LEAK_CHECK;
11 pi = reallocarray(pi, 10U, sizeof(int));
12 VALGRIND_DO_ADDED_LEAK_CHECK;
13 pi = reallocarray(pi, 0U, sizeof(int));
14 VALGRIND_DO_ADDED_LEAK_CHECK;
15 pi = reallocarray(pi, 10U, 0U);
16 free(pi);
17 VALGRIND_DO_CHANGED_LEAK_CHECK;
18 pi = NULL;
19 pi = reallocarray(pi, 10U, sizeof(int));
20 VALGRIND_DO_ADDED_LEAK_CHECK;
21 errno = 0;
22 pi = reallocarray(pi, 1UL << 49, 1U);
23 assert(!pi);
24 assert(errno == ENOMEM);
25 VALGRIND_DO_CHANGED_LEAK_CHECK;
26 pi = reallocarray(pi, SIZE_MAX/1000U, SIZE_MAX/1000U);
27 assert(!pi);
28 assert(errno == ENOMEM);
29 VALGRIND_DO_CHANGED_LEAK_CHECK;