diff options
author | Sergei Golubchik <sergii@pisem.net> | 2013-08-29 16:17:44 +0200 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2013-08-29 16:17:44 +0200 |
commit | 253366e7762ef73145d3a73bf3212083522aa259 (patch) | |
tree | b1311d61ca24740a55fa1c3f4a4bbee9f674560c /extra/jemalloc/test/mremap.c | |
parent | 28a9fea122e40bdb9f199f053cc70299656b7018 (diff) | |
parent | 4cbfd46e3d1020bfe7a87bc6dc8b2952100a7c16 (diff) | |
download | mariadb-git-253366e7762ef73145d3a73bf3212083522aa259.tar.gz |
merge in git://github.com/Tokutek/jemalloc
Diffstat (limited to 'extra/jemalloc/test/mremap.c')
-rw-r--r-- | extra/jemalloc/test/mremap.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/extra/jemalloc/test/mremap.c b/extra/jemalloc/test/mremap.c new file mode 100644 index 00000000000..47efa7c415b --- /dev/null +++ b/extra/jemalloc/test/mremap.c @@ -0,0 +1,60 @@ +#define JEMALLOC_MANGLE +#include "jemalloc_test.h" + +int +main(void) +{ + int ret, err; + size_t sz, lg_chunk, chunksize, i; + char *p, *q; + + malloc_printf("Test begin\n"); + + sz = sizeof(lg_chunk); + if ((err = mallctl("opt.lg_chunk", &lg_chunk, &sz, NULL, 0))) { + assert(err != ENOENT); + malloc_printf("%s(): Error in mallctl(): %s\n", __func__, + strerror(err)); + ret = 1; + goto label_return; + } + chunksize = ((size_t)1U) << lg_chunk; + + p = (char *)malloc(chunksize); + if (p == NULL) { + malloc_printf("malloc(%zu) --> %p\n", chunksize, p); + ret = 1; + goto label_return; + } + memset(p, 'a', chunksize); + + q = (char *)realloc(p, chunksize * 2); + if (q == NULL) { + malloc_printf("realloc(%p, %zu) --> %p\n", p, chunksize * 2, + q); + ret = 1; + goto label_return; + } + for (i = 0; i < chunksize; i++) { + assert(q[i] == 'a'); + } + + p = q; + + q = (char *)realloc(p, chunksize); + if (q == NULL) { + malloc_printf("realloc(%p, %zu) --> %p\n", p, chunksize, q); + ret = 1; + goto label_return; + } + for (i = 0; i < chunksize; i++) { + assert(q[i] == 'a'); + } + + free(q); + + ret = 0; +label_return: + malloc_printf("Test end\n"); + return (ret); +} |