@@ -646,18 +646,26 @@ static void free_slab(void *unused, void *slab) {
646646
647647umf_result_t disjoint_pool_initialize (umf_memory_provider_handle_t provider ,
648648 const void * params , void * * ppPool ) {
649- // TODO set defaults when user pass the NULL as params
650- if (!provider || !params || !ppPool ) {
649+ if (!provider || !ppPool ) {
651650 return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
652651 }
653652
654- const umf_disjoint_pool_params_t * dp_params = params ;
653+ const umf_disjoint_pool_params_t * dp_params ;
655654
656- // min_bucket_size parameter must be a power of 2 for bucket sizes
657- // to generate correctly.
658- if (!dp_params -> min_bucket_size ||
659- !IS_POWER_OF_2 (dp_params -> min_bucket_size )) {
660- return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
655+ // If params is NULL, use default values
656+ umf_disjoint_pool_params_t default_params = {
657+ .slab_min_size = 64 * 1024 , // 64KB default
658+ .max_poolable_size = 2 * 1024 * 1024 , // 2MB default
659+ .capacity = 4 , // default
660+ .min_bucket_size = 8 , // default
661+ .cur_pool_size = 0 ,
662+ .pool_trace = 0 ,
663+ .shared_limits = NULL ,
664+ .name = "disjoint" };
665+ if (!params ) {
666+ dp_params = & default_params ;
667+ } else {
668+ dp_params = params ;
661669 }
662670
663671 disjoint_pool_t * disjoint_pool =
0 commit comments