Skip to content

Commit e521e4b

Browse files
authored
Merge pull request #332 from ldorau/Fix_ba_leak_free_and_ba_leak_pool_contains_pointer_in_proxy_library
Fix ba_leak_free and ba_leak_pool_contains_pointer in proxy library
2 parents 3a2c937 + efa0cd9 commit e521e4b

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/proxy_lib/proxy_lib.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,33 +140,39 @@ static void ba_leak_create(void) { Base_alloc_leak = umf_ba_linear_create(0); }
140140

141141
// it does not implement destroy(), because we cannot destroy non-freed memory
142142

143-
static inline void *ba_leak_malloc(size_t size) {
143+
static void ba_leak_init_once(void) {
144144
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();
145149
return umf_ba_linear_alloc(Base_alloc_leak, size);
146150
}
147151

148152
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();
150154
// umf_ba_linear_alloc() returns zeroed memory
151155
return umf_ba_linear_alloc(Base_alloc_leak, nmemb * size);
152156
}
153157

154158
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();
156160
return ba_generic_realloc(Base_alloc_leak, ptr, size, max_size);
157161
}
158162

159163
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();
161165
void *ptr = umf_ba_linear_alloc(Base_alloc_leak, size + alignment);
162166
return (void *)ALIGN_UP((uintptr_t)ptr, alignment);
163167
}
164168

165169
static inline int ba_leak_free(void *ptr) {
170+
ba_leak_init_once();
166171
return umf_ba_linear_free(Base_alloc_leak, ptr);
167172
}
168173

169174
static inline size_t ba_leak_pool_contains_pointer(void *ptr) {
175+
ba_leak_init_once();
170176
return umf_ba_linear_pool_contains_pointer(Base_alloc_leak, ptr);
171177
}
172178

0 commit comments

Comments
 (0)