@@ -140,33 +140,39 @@ static void ba_leak_create(void) { Base_alloc_leak = umf_ba_linear_create(0); }
140
140
141
141
// it does not implement destroy(), because we cannot destroy non-freed memory
142
142
143
- static inline void * ba_leak_malloc ( size_t size ) {
143
+ static void ba_leak_init_once ( void ) {
144
144
util_init_once (& Base_alloc_leak_initialized , ba_leak_create );
145
+ }
146
+
147
+ static inline void * ba_leak_malloc (size_t size ) {
148
+ ba_leak_init_once ();
145
149
return umf_ba_linear_alloc (Base_alloc_leak , size );
146
150
}
147
151
148
152
static inline void * ba_leak_calloc (size_t nmemb , size_t size ) {
149
- util_init_once ( & Base_alloc_leak_initialized , ba_leak_create );
153
+ ba_leak_init_once ( );
150
154
// umf_ba_linear_alloc() returns zeroed memory
151
155
return umf_ba_linear_alloc (Base_alloc_leak , nmemb * size );
152
156
}
153
157
154
158
static inline void * ba_leak_realloc (void * ptr , size_t size , size_t max_size ) {
155
- util_init_once ( & Base_alloc_leak_initialized , ba_leak_create );
159
+ ba_leak_init_once ( );
156
160
return ba_generic_realloc (Base_alloc_leak , ptr , size , max_size );
157
161
}
158
162
159
163
static inline void * ba_leak_aligned_alloc (size_t alignment , size_t size ) {
160
- util_init_once ( & Base_alloc_leak_initialized , ba_leak_create );
164
+ ba_leak_init_once ( );
161
165
void * ptr = umf_ba_linear_alloc (Base_alloc_leak , size + alignment );
162
166
return (void * )ALIGN_UP ((uintptr_t )ptr , alignment );
163
167
}
164
168
165
169
static inline int ba_leak_free (void * ptr ) {
170
+ ba_leak_init_once ();
166
171
return umf_ba_linear_free (Base_alloc_leak , ptr );
167
172
}
168
173
169
174
static inline size_t ba_leak_pool_contains_pointer (void * ptr ) {
175
+ ba_leak_init_once ();
170
176
return umf_ba_linear_pool_contains_pointer (Base_alloc_leak , ptr );
171
177
}
172
178
0 commit comments