Home | History | Annotate | Line # | Download | only in unit
      1 #include "test/jemalloc_test.h"
      2 
      3 static uint64_t
      4 deallocated() {
      5 	if (!config_stats) {
      6 		return 0;
      7 	}
      8 	uint64_t deallocated;
      9 	size_t sz = sizeof(deallocated);
     10 	expect_d_eq(mallctl("thread.deallocated", (void *)&deallocated, &sz,
     11 	    NULL, 0), 0, "Unexpected mallctl failure");
     12 	return deallocated;
     13 }
     14 
     15 TEST_BEGIN(test_realloc_free) {
     16 	void *ptr = mallocx(42, 0);
     17 	expect_ptr_not_null(ptr, "Unexpected mallocx error");
     18 	uint64_t deallocated_before = deallocated();
     19 	ptr = realloc(ptr, 0);
     20 	uint64_t deallocated_after = deallocated();
     21 	expect_ptr_null(ptr, "Realloc didn't free");
     22 	if (config_stats) {
     23 		expect_u64_gt(deallocated_after, deallocated_before,
     24 		    "Realloc didn't free");
     25 	}
     26 }
     27 TEST_END
     28 
     29 int
     30 main(void) {
     31 	return test(
     32 	    test_realloc_free);
     33 }
     34