memory/jemalloc/src/test/mremap.c

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 #define	JEMALLOC_MANGLE
     2 #include "jemalloc_test.h"
     4 int
     5 main(void)
     6 {
     7 	int ret, err;
     8 	size_t sz, lg_chunk, chunksize, i;
     9 	char *p, *q;
    11 	malloc_printf("Test begin\n");
    13 	sz = sizeof(lg_chunk);
    14 	if ((err = mallctl("opt.lg_chunk", &lg_chunk, &sz, NULL, 0))) {
    15 		assert(err != ENOENT);
    16 		malloc_printf("%s(): Error in mallctl(): %s\n", __func__,
    17 		    strerror(err));
    18 		ret = 1;
    19 		goto label_return;
    20 	}
    21 	chunksize = ((size_t)1U) << lg_chunk;
    23 	p = (char *)malloc(chunksize);
    24 	if (p == NULL) {
    25 		malloc_printf("malloc(%zu) --> %p\n", chunksize, p);
    26 		ret = 1;
    27 		goto label_return;
    28 	}
    29 	memset(p, 'a', chunksize);
    31 	q = (char *)realloc(p, chunksize * 2);
    32 	if (q == NULL) {
    33 		malloc_printf("realloc(%p, %zu) --> %p\n", p, chunksize * 2,
    34 		    q);
    35 		ret = 1;
    36 		goto label_return;
    37 	}
    38 	for (i = 0; i < chunksize; i++) {
    39 		assert(q[i] == 'a');
    40 	}
    42 	p = q;
    44 	q = (char *)realloc(p, chunksize);
    45 	if (q == NULL) {
    46 		malloc_printf("realloc(%p, %zu) --> %p\n", p, chunksize, q);
    47 		ret = 1;
    48 		goto label_return;
    49 	}
    50 	for (i = 0; i < chunksize; i++) {
    51 		assert(q[i] == 'a');
    52 	}
    54 	free(q);
    56 	ret = 0;
    57 label_return:
    58 	malloc_printf("Test end\n");
    59 	return (ret);
    60 }

mercurial