@@ -271,8 +271,6 @@ static umf_result_t umfMemoryTrackerRemove(umf_memory_tracker_handle_t hTracker,
271271 parent_value -> n_children -- ;
272272 }
273273
274- umf_ba_free (hTracker -> alloc_info_allocator , value );
275-
276274 return UMF_RESULT_SUCCESS ;
277275}
278276
@@ -664,8 +662,6 @@ static umf_result_t trackingAllocationMerge(void *hProvider, void *lowPtr,
664662 lowLevel , lowPtr , lowValue -> n_children , highPtr ,
665663 highValue -> n_children , totalSize );
666664
667- umf_ba_free (provider -> hTracker -> alloc_info_allocator , highValue );
668-
669665 return UMF_RESULT_SUCCESS ;
670666
671667err_fatal :
@@ -1156,6 +1152,12 @@ void umfTrackingMemoryProviderGetUpstreamProvider(
11561152 * hUpstream = p -> hUpstream ;
11571153}
11581154
1155+ static void free_leaf (void * leaf_allocator , void * ptr ) {
1156+ if (ptr ) {
1157+ umf_ba_free (leaf_allocator , ptr );
1158+ }
1159+ }
1160+
11591161umf_memory_tracker_handle_t umfMemoryTrackerCreate (void ) {
11601162 umf_memory_tracker_handle_t handle =
11611163 umf_ba_global_alloc (sizeof (struct umf_memory_tracker_t ));
@@ -1180,7 +1182,8 @@ umf_memory_tracker_handle_t umfMemoryTrackerCreate(void) {
11801182
11811183 int i ;
11821184 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 );
11841187 if (!handle -> alloc_segments_map [i ]) {
11851188 goto err_destroy_alloc_segments_map ;
11861189 }
0 commit comments