]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
1 | #include "test/jemalloc_test.h" |
2 | ||
3 | #ifdef JEMALLOC_FILL | |
4 | const char *malloc_conf = | |
5 | "abort:false,junk:false,zero:true,redzone:false,quarantine:0"; | |
6 | #endif | |
7 | ||
8 | static void | |
9 | test_zero(size_t sz_min, size_t sz_max) | |
10 | { | |
11 | char *s; | |
12 | size_t sz_prev, sz, i; | |
13 | ||
14 | sz_prev = 0; | |
15 | s = (char *)mallocx(sz_min, 0); | |
16 | assert_ptr_not_null((void *)s, "Unexpected mallocx() failure"); | |
17 | ||
18 | for (sz = sallocx(s, 0); sz <= sz_max; | |
19 | sz_prev = sz, sz = sallocx(s, 0)) { | |
20 | if (sz_prev > 0) { | |
21 | assert_c_eq(s[0], 'a', | |
22 | "Previously allocated byte %zu/%zu is corrupted", | |
23 | ZU(0), sz_prev); | |
24 | assert_c_eq(s[sz_prev-1], 'a', | |
25 | "Previously allocated byte %zu/%zu is corrupted", | |
26 | sz_prev-1, sz_prev); | |
27 | } | |
28 | ||
29 | for (i = sz_prev; i < sz; i++) { | |
30 | assert_c_eq(s[i], 0x0, | |
31 | "Newly allocated byte %zu/%zu isn't zero-filled", | |
32 | i, sz); | |
33 | s[i] = 'a'; | |
34 | } | |
35 | ||
36 | if (xallocx(s, sz+1, 0, 0) == sz) { | |
37 | s = (char *)rallocx(s, sz+1, 0); | |
38 | assert_ptr_not_null((void *)s, | |
39 | "Unexpected rallocx() failure"); | |
40 | } | |
41 | } | |
42 | ||
43 | dallocx(s, 0); | |
44 | } | |
45 | ||
46 | TEST_BEGIN(test_zero_small) | |
47 | { | |
48 | ||
49 | test_skip_if(!config_fill); | |
50 | test_zero(1, SMALL_MAXCLASS-1); | |
51 | } | |
52 | TEST_END | |
53 | ||
54 | TEST_BEGIN(test_zero_large) | |
55 | { | |
56 | ||
57 | test_skip_if(!config_fill); | |
54a0048b | 58 | test_zero(SMALL_MAXCLASS+1, large_maxclass); |
1a4d82fc JJ |
59 | } |
60 | TEST_END | |
61 | ||
62 | TEST_BEGIN(test_zero_huge) | |
63 | { | |
64 | ||
65 | test_skip_if(!config_fill); | |
54a0048b | 66 | test_zero(large_maxclass+1, chunksize*2); |
1a4d82fc JJ |
67 | } |
68 | TEST_END | |
69 | ||
70 | int | |
71 | main(void) | |
72 | { | |
73 | ||
74 | return (test( | |
75 | test_zero_small, | |
76 | test_zero_large, | |
77 | test_zero_huge)); | |
78 | } |