tests/util_allocator.c

changeset 1317
eeb2fc3850e2
parent 985
68754c7de906
equal deleted inserted replaced
1316:c41538edfcef 1317:eeb2fc3850e2
78 } 78 }
79 79
80 static void *cx_realloc_testing(void *d, void *mem, size_t n) { 80 static void *cx_realloc_testing(void *d, void *mem, size_t n) {
81 CxTestingAllocator *data = d; 81 CxTestingAllocator *data = d;
82 void *ptr = realloc(mem, n); 82 void *ptr = realloc(mem, n);
83 if (ptr == mem) { 83 if (mem != NULL && ptr == mem) {
84 return ptr; 84 return ptr;
85 } else { 85 } else {
86 data->alloc_total++; 86 data->alloc_total++;
87 if (ptr == NULL) { 87 if (ptr == NULL) {
88 data->alloc_failed++; 88 data->alloc_failed++;
89 } else { 89 } else {
90 data->free_total++; 90 if (mem != NULL) {
91 if (!cx_testing_allocator_untrack(data, mem)) { 91 data->free_total++;
92 data->free_failed++; 92 if (!cx_testing_allocator_untrack(data, mem)) {
93 data->free_failed++;
94 }
93 } 95 }
94 cx_testing_allocator_track(data, ptr); 96 cx_testing_allocator_track(data, ptr);
95 } 97 }
96 return ptr; 98 return ptr;
97 } 99 }
108 } 110 }
109 return ptr; 111 return ptr;
110 } 112 }
111 113
112 static void cx_free_testing(void *d, void *mem) { 114 static void cx_free_testing(void *d, void *mem) {
115 if (mem == NULL) return;
113 CxTestingAllocator *data = d; 116 CxTestingAllocator *data = d;
114 data->free_total++; 117 data->free_total++;
115 if (cx_testing_allocator_untrack(data, mem)) { 118 if (cx_testing_allocator_untrack(data, mem)) {
116 free(mem); 119 free(mem);
117 } else { 120 } else {

mercurial