--------------------------------------------------------------------------- Main testing ---------------------------------------------------------------------------
| 50 | // Main testing |
| 51 | // --------------------------------------------------------------------------- |
| 52 | int main(void) { |
| 53 | mi_option_disable(mi_option_verbose); |
| 54 | |
| 55 | // --------------------------------------------------- |
| 56 | // Malloc |
| 57 | // --------------------------------------------------- |
| 58 | |
| 59 | CHECK_BODY("malloc-zero") { |
| 60 | void* p = mi_malloc(0); |
| 61 | result = (p != NULL); |
| 62 | mi_free(p); |
| 63 | }; |
| 64 | CHECK_BODY("malloc-nomem1") { |
| 65 | result = (mi_malloc((size_t)PTRDIFF_MAX + (size_t)1) == NULL); |
| 66 | }; |
| 67 | CHECK_BODY("malloc-null") { |
| 68 | mi_free(NULL); |
| 69 | }; |
| 70 | CHECK_BODY("calloc-overflow") { |
| 71 | // use (size_t)&mi_calloc to get some number without triggering compiler warnings |
| 72 | result = (mi_calloc((size_t)&mi_calloc,SIZE_MAX/1000) == NULL); |
| 73 | }; |
| 74 | CHECK_BODY("calloc0") { |
| 75 | void* p = mi_calloc(0,1000); |
| 76 | result = (mi_usable_size(p) <= 16); |
| 77 | mi_free(p); |
| 78 | }; |
| 79 | CHECK_BODY("malloc-large") { // see PR #544. |
| 80 | void* p = mi_malloc(67108872); |
| 81 | mi_free(p); |
| 82 | }; |
| 83 | |
| 84 | // --------------------------------------------------- |
| 85 | // Extended |
| 86 | // --------------------------------------------------- |
| 87 | CHECK_BODY("posix_memalign1") { |
| 88 | void* p = &p; |
| 89 | int err = mi_posix_memalign(&p, sizeof(void*), 32); |
| 90 | result = ((err==0 && (uintptr_t)p % sizeof(void*) == 0) || p==&p); |
| 91 | mi_free(p); |
| 92 | }; |
| 93 | CHECK_BODY("posix_memalign_no_align") { |
| 94 | void* p = &p; |
| 95 | int err = mi_posix_memalign(&p, 3, 32); |
| 96 | result = (err==EINVAL && p==&p); |
| 97 | }; |
| 98 | CHECK_BODY("posix_memalign_zero") { |
| 99 | void* p = &p; |
| 100 | int err = mi_posix_memalign(&p, sizeof(void*), 0); |
| 101 | mi_free(p); |
| 102 | result = (err==0); |
| 103 | }; |
| 104 | CHECK_BODY("posix_memalign_nopow2") { |
| 105 | void* p = &p; |
| 106 | int err = mi_posix_memalign(&p, 3*sizeof(void*), 32); |
| 107 | result = (err==EINVAL && p==&p); |
| 108 | }; |
| 109 | CHECK_BODY("posix_memalign_nomem") { |
nothing calls this directly
no test coverage detected