mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 16:48:27 -05:00
46 lines
993 B
C
46 lines
993 B
C
|
#include "test/jemalloc_test.h"
|
||
|
|
||
|
TEST_BEGIN(test_mremap)
|
||
|
{
|
||
|
int err;
|
||
|
size_t sz, lg_chunk, chunksize, i;
|
||
|
char *p, *q;
|
||
|
|
||
|
sz = sizeof(lg_chunk);
|
||
|
err = mallctl("opt.lg_chunk", &lg_chunk, &sz, NULL, 0);
|
||
|
assert_d_eq(err, 0, "Error in mallctl(): %s", strerror(err));
|
||
|
chunksize = ((size_t)1U) << lg_chunk;
|
||
|
|
||
|
p = (char *)malloc(chunksize);
|
||
|
assert_ptr_not_null(p, "malloc(%zu) --> %p", chunksize, p);
|
||
|
memset(p, 'a', chunksize);
|
||
|
|
||
|
q = (char *)realloc(p, chunksize * 2);
|
||
|
assert_ptr_not_null(q, "realloc(%p, %zu) --> %p", p, chunksize * 2,
|
||
|
q);
|
||
|
for (i = 0; i < chunksize; i++) {
|
||
|
assert_c_eq(q[i], 'a',
|
||
|
"realloc() should preserve existing bytes across copies");
|
||
|
}
|
||
|
|
||
|
p = q;
|
||
|
|
||
|
q = (char *)realloc(p, chunksize);
|
||
|
assert_ptr_not_null(q, "realloc(%p, %zu) --> %p", p, chunksize, q);
|
||
|
for (i = 0; i < chunksize; i++) {
|
||
|
assert_c_eq(q[i], 'a',
|
||
|
"realloc() should preserve existing bytes across copies");
|
||
|
}
|
||
|
|
||
|
free(q);
|
||
|
}
|
||
|
TEST_END
|
||
|
|
||
|
int
|
||
|
main(void)
|
||
|
{
|
||
|
|
||
|
return (test(
|
||
|
test_mremap));
|
||
|
}
|