@@ -271,8 +271,6 @@ static umf_result_t umfMemoryTrackerRemove(umf_memory_tracker_handle_t hTracker,
271
271
parent_value -> n_children -- ;
272
272
}
273
273
274
- umf_ba_free (hTracker -> alloc_info_allocator , value );
275
-
276
274
return UMF_RESULT_SUCCESS ;
277
275
}
278
276
@@ -664,8 +662,6 @@ static umf_result_t trackingAllocationMerge(void *hProvider, void *lowPtr,
664
662
lowLevel , lowPtr , lowValue -> n_children , highPtr ,
665
663
highValue -> n_children , totalSize );
666
664
667
- umf_ba_free (provider -> hTracker -> alloc_info_allocator , highValue );
668
-
669
665
return UMF_RESULT_SUCCESS ;
670
666
671
667
err_fatal :
@@ -1156,6 +1152,12 @@ void umfTrackingMemoryProviderGetUpstreamProvider(
1156
1152
* hUpstream = p -> hUpstream ;
1157
1153
}
1158
1154
1155
+ static void free_leaf (void * leaf_allocator , void * ptr ) {
1156
+ if (ptr ) {
1157
+ umf_ba_free (leaf_allocator , ptr );
1158
+ }
1159
+ }
1160
+
1159
1161
umf_memory_tracker_handle_t umfMemoryTrackerCreate (void ) {
1160
1162
umf_memory_tracker_handle_t handle =
1161
1163
umf_ba_global_alloc (sizeof (struct umf_memory_tracker_t ));
@@ -1180,7 +1182,8 @@ umf_memory_tracker_handle_t umfMemoryTrackerCreate(void) {
1180
1182
1181
1183
int i ;
1182
1184
for (i = 0 ; i < MAX_LEVELS_OF_ALLOC_SEGMENT_MAP ; i ++ ) {
1183
- handle -> alloc_segments_map [i ] = critnib_new (NULL , NULL );
1185
+ handle -> alloc_segments_map [i ] =
1186
+ critnib_new (alloc_info_allocator , free_leaf );
1184
1187
if (!handle -> alloc_segments_map [i ]) {
1185
1188
goto err_destroy_alloc_segments_map ;
1186
1189
}
0 commit comments