1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/memory/jemalloc/src/test/mremap.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,60 @@ 1.4 +#define JEMALLOC_MANGLE 1.5 +#include "jemalloc_test.h" 1.6 + 1.7 +int 1.8 +main(void) 1.9 +{ 1.10 + int ret, err; 1.11 + size_t sz, lg_chunk, chunksize, i; 1.12 + char *p, *q; 1.13 + 1.14 + malloc_printf("Test begin\n"); 1.15 + 1.16 + sz = sizeof(lg_chunk); 1.17 + if ((err = mallctl("opt.lg_chunk", &lg_chunk, &sz, NULL, 0))) { 1.18 + assert(err != ENOENT); 1.19 + malloc_printf("%s(): Error in mallctl(): %s\n", __func__, 1.20 + strerror(err)); 1.21 + ret = 1; 1.22 + goto label_return; 1.23 + } 1.24 + chunksize = ((size_t)1U) << lg_chunk; 1.25 + 1.26 + p = (char *)malloc(chunksize); 1.27 + if (p == NULL) { 1.28 + malloc_printf("malloc(%zu) --> %p\n", chunksize, p); 1.29 + ret = 1; 1.30 + goto label_return; 1.31 + } 1.32 + memset(p, 'a', chunksize); 1.33 + 1.34 + q = (char *)realloc(p, chunksize * 2); 1.35 + if (q == NULL) { 1.36 + malloc_printf("realloc(%p, %zu) --> %p\n", p, chunksize * 2, 1.37 + q); 1.38 + ret = 1; 1.39 + goto label_return; 1.40 + } 1.41 + for (i = 0; i < chunksize; i++) { 1.42 + assert(q[i] == 'a'); 1.43 + } 1.44 + 1.45 + p = q; 1.46 + 1.47 + q = (char *)realloc(p, chunksize); 1.48 + if (q == NULL) { 1.49 + malloc_printf("realloc(%p, %zu) --> %p\n", p, chunksize, q); 1.50 + ret = 1; 1.51 + goto label_return; 1.52 + } 1.53 + for (i = 0; i < chunksize; i++) { 1.54 + assert(q[i] == 'a'); 1.55 + } 1.56 + 1.57 + free(q); 1.58 + 1.59 + ret = 0; 1.60 +label_return: 1.61 + malloc_printf("Test end\n"); 1.62 + return (ret); 1.63 +}