Blame memkind-1.10.1/jemalloc/test/unit/zero.c

Packit Service 7f3b24
#include "test/jemalloc_test.h"
Packit Service 7f3b24
Packit Service 7f3b24
static void
Packit Service 7f3b24
test_zero(size_t sz_min, size_t sz_max) {
Packit Service 7f3b24
	uint8_t *s;
Packit Service 7f3b24
	size_t sz_prev, sz, i;
Packit Service 7f3b24
#define MAGIC	((uint8_t)0x61)
Packit Service 7f3b24
Packit Service 7f3b24
	sz_prev = 0;
Packit Service 7f3b24
	s = (uint8_t *)mallocx(sz_min, 0);
Packit Service 7f3b24
	assert_ptr_not_null((void *)s, "Unexpected mallocx() failure");
Packit Service 7f3b24
Packit Service 7f3b24
	for (sz = sallocx(s, 0); sz <= sz_max;
Packit Service 7f3b24
	    sz_prev = sz, sz = sallocx(s, 0)) {
Packit Service 7f3b24
		if (sz_prev > 0) {
Packit Service 7f3b24
			assert_u_eq(s[0], MAGIC,
Packit Service 7f3b24
			    "Previously allocated byte %zu/%zu is corrupted",
Packit Service 7f3b24
			    ZU(0), sz_prev);
Packit Service 7f3b24
			assert_u_eq(s[sz_prev-1], MAGIC,
Packit Service 7f3b24
			    "Previously allocated byte %zu/%zu is corrupted",
Packit Service 7f3b24
			    sz_prev-1, sz_prev);
Packit Service 7f3b24
		}
Packit Service 7f3b24
Packit Service 7f3b24
		for (i = sz_prev; i < sz; i++) {
Packit Service 7f3b24
			assert_u_eq(s[i], 0x0,
Packit Service 7f3b24
			    "Newly allocated byte %zu/%zu isn't zero-filled",
Packit Service 7f3b24
			    i, sz);
Packit Service 7f3b24
			s[i] = MAGIC;
Packit Service 7f3b24
		}
Packit Service 7f3b24
Packit Service 7f3b24
		if (xallocx(s, sz+1, 0, 0) == sz) {
Packit Service 7f3b24
			s = (uint8_t *)rallocx(s, sz+1, 0);
Packit Service 7f3b24
			assert_ptr_not_null((void *)s,
Packit Service 7f3b24
			    "Unexpected rallocx() failure");
Packit Service 7f3b24
		}
Packit Service 7f3b24
	}
Packit Service 7f3b24
Packit Service 7f3b24
	dallocx(s, 0);
Packit Service 7f3b24
#undef MAGIC
Packit Service 7f3b24
}
Packit Service 7f3b24
Packit Service 7f3b24
TEST_BEGIN(test_zero_small) {
Packit Service 7f3b24
	test_skip_if(!config_fill);
Packit Service 7f3b24
	test_zero(1, SC_SMALL_MAXCLASS - 1);
Packit Service 7f3b24
}
Packit Service 7f3b24
TEST_END
Packit Service 7f3b24
Packit Service 7f3b24
TEST_BEGIN(test_zero_large) {
Packit Service 7f3b24
	test_skip_if(!config_fill);
Packit Service 7f3b24
	test_zero(SC_SMALL_MAXCLASS + 1, 1U << (SC_LG_LARGE_MINCLASS + 1));
Packit Service 7f3b24
}
Packit Service 7f3b24
TEST_END
Packit Service 7f3b24
Packit Service 7f3b24
int
Packit Service 7f3b24
main(void) {
Packit Service 7f3b24
	return test(
Packit Service 7f3b24
	    test_zero_small,
Packit Service 7f3b24
	    test_zero_large);
Packit Service 7f3b24
}