michael@0: #define JEMALLOC_MANGLE michael@0: #include "jemalloc_test.h" michael@0: michael@0: int michael@0: main(void) michael@0: { michael@0: int ret, err; michael@0: size_t sz, lg_chunk, chunksize, i; michael@0: char *p, *q; michael@0: michael@0: malloc_printf("Test begin\n"); michael@0: michael@0: sz = sizeof(lg_chunk); michael@0: if ((err = mallctl("opt.lg_chunk", &lg_chunk, &sz, NULL, 0))) { michael@0: assert(err != ENOENT); michael@0: malloc_printf("%s(): Error in mallctl(): %s\n", __func__, michael@0: strerror(err)); michael@0: ret = 1; michael@0: goto label_return; michael@0: } michael@0: chunksize = ((size_t)1U) << lg_chunk; michael@0: michael@0: p = (char *)malloc(chunksize); michael@0: if (p == NULL) { michael@0: malloc_printf("malloc(%zu) --> %p\n", chunksize, p); michael@0: ret = 1; michael@0: goto label_return; michael@0: } michael@0: memset(p, 'a', chunksize); michael@0: michael@0: q = (char *)realloc(p, chunksize * 2); michael@0: if (q == NULL) { michael@0: malloc_printf("realloc(%p, %zu) --> %p\n", p, chunksize * 2, michael@0: q); michael@0: ret = 1; michael@0: goto label_return; michael@0: } michael@0: for (i = 0; i < chunksize; i++) { michael@0: assert(q[i] == 'a'); michael@0: } michael@0: michael@0: p = q; michael@0: michael@0: q = (char *)realloc(p, chunksize); michael@0: if (q == NULL) { michael@0: malloc_printf("realloc(%p, %zu) --> %p\n", p, chunksize, q); michael@0: ret = 1; michael@0: goto label_return; michael@0: } michael@0: for (i = 0; i < chunksize; i++) { michael@0: assert(q[i] == 'a'); michael@0: } michael@0: michael@0: free(q); michael@0: michael@0: ret = 0; michael@0: label_return: michael@0: malloc_printf("Test end\n"); michael@0: return (ret); michael@0: }