@@ -647,17 +647,26 @@ static void free_slab(void *unused, void *slab) {
647647umf_result_t disjoint_pool_initialize (umf_memory_provider_handle_t provider ,
648648 const void * params , void * * ppPool ) {
649649 // TODO set defaults when user pass the NULL as params
650- if (!provider || !params || ! ppPool ) {
650+ if (!provider || !ppPool ) {
651651 return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
652652 }
653653
654- const umf_disjoint_pool_params_t * dp_params = params ;
654+ const umf_disjoint_pool_params_t * dp_params ;
655655
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 ;
656+ // If params is NULL, use default values
657+ umf_disjoint_pool_params_t default_params = {
658+ .slab_min_size = 64 * 1024 , // 64KB default
659+ .max_poolable_size = 2 * 1024 * 1024 , // 2MB default
660+ .capacity = 4 , // default
661+ .min_bucket_size = 8 , // default
662+ .cur_pool_size = 0 ,
663+ .pool_trace = 0 ,
664+ .shared_limits = NULL ,
665+ .name = "disjoint" };
666+ if (!params ) {
667+ dp_params = & default_params ;
668+ } else {
669+ dp_params = params ;
661670 }
662671
663672 disjoint_pool_t * disjoint_pool =
0 commit comments