Skip to content

Commit 87ea9a2

Browse files
committed
Assert if tracking provider is not empty
Signed-off-by: Lukasz Dorau <[email protected]>
1 parent c1c55b6 commit 87ea9a2

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

src/provider/provider_tracking.c

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include <assert.h>
1818
#include <errno.h>
19+
#include <stdio.h>
1920
#include <stdlib.h>
2021

2122
typedef struct tracker_value_t {
@@ -160,7 +161,29 @@ static umf_result_t trackingInitialize(void *params, void **ret) {
160161
return UMF_RESULT_SUCCESS;
161162
}
162163

163-
static void trackingFinalize(void *provider) { free(provider); }
164+
static void trackingFinalize(void *provider) {
165+
umf_tracking_memory_provider_t *p =
166+
(umf_tracking_memory_provider_t *)provider;
167+
168+
uintptr_t rkey;
169+
void *rvalue;
170+
size_t n_items = 0;
171+
uintptr_t last_key = 0;
172+
while (1 == critnib_find((critnib *)p->hTracker, last_key, FIND_G, &rkey,
173+
&rvalue)) {
174+
n_items++;
175+
last_key = rkey;
176+
}
177+
178+
if (n_items) {
179+
fprintf(stderr,
180+
"ASSERT: tracking provider is not empty! (%zu items left)\n",
181+
n_items);
182+
assert(n_items == 0);
183+
}
184+
185+
free(provider);
186+
}
164187

165188
static void trackingGetLastError(void *provider, const char **msg,
166189
int32_t *pError) {

0 commit comments

Comments
 (0)