From 830de8ad20e1eb49e6b633d2de0a54a764429891 Mon Sep 17 00:00:00 2001 From: Rainer Keller Date: Mon, 30 Jul 2007 07:30:47 +0000 Subject: [PATCH] - In ompi/mca/mpool/base/mpool_base_alloc.c, we may miss freeing value.. Actually, this string is not used anywhere else, so just have key and value on the stack. This commit was SVN r15675. --- ompi/mca/mpool/base/mpool_base_alloc.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/ompi/mca/mpool/base/mpool_base_alloc.c b/ompi/mca/mpool/base/mpool_base_alloc.c index 3d91be5842..9e3245c95b 100644 --- a/ompi/mca/mpool/base/mpool_base_alloc.c +++ b/ompi/mca/mpool/base/mpool_base_alloc.c @@ -100,7 +100,7 @@ void *mca_mpool_base_alloc(size_t size, ompi_info_t *info) opal_list_item_t * item; int num_modules = opal_list_get_size(&mca_mpool_base_modules); int reg_module_num = 0; - int i, num_keys; + int i; mca_mpool_base_selected_module_t * current; mca_mpool_base_selected_module_t * no_reg_function = NULL; mca_mpool_base_selected_module_t ** has_reg_function = NULL; @@ -108,10 +108,9 @@ void *mca_mpool_base_alloc(size_t size, ompi_info_t *info) mca_mpool_base_tree_item_t* mpool_tree_item = NULL; mca_mpool_base_module_t *mpool; void * mem = NULL; - char * key = NULL; - char * value = NULL; int flag = 0; - bool match_found = false, mpool_requested = false; + bool match_found = false; + bool mpool_requested = false; if(num_modules > 0) { has_reg_function = (mca_mpool_base_selected_module_t **) @@ -145,27 +144,24 @@ void *mca_mpool_base_alloc(size_t size, ompi_info_t *info) } else { + int num_keys; + char key[MPI_MAX_INFO_KEY + 1]; + char value[MPI_MAX_INFO_VAL + 1]; + ompi_info_get_nkeys(info, &num_keys); - key = (char*)malloc(MPI_MAX_INFO_KEY + 1); for(i = 0; i < num_keys; i++) { - match_found = false; ompi_info_get_nthkey(info, i, key); if ( 0 != strcmp(key, "mpool") ) { continue; } mpool_requested = true; - value = (char*)malloc(MPI_MAX_INFO_VAL+1); - if ( NULL == value ) { - break; - } ompi_info_get(info, key, MPI_MAX_INFO_VAL+1, value, &flag); if ( !flag ) { - free(value); - value = NULL; continue; } + match_found = false; for(item = opal_list_get_first(&mca_mpool_base_modules); item != opal_list_get_end(&mca_mpool_base_modules); item = opal_list_get_next(item)) @@ -181,7 +177,6 @@ void *mca_mpool_base_alloc(size_t size, ompi_info_t *info) { /* there was more than one requested mpool that lacks * a registration function, so return failure */ - free(key); goto out; } no_reg_function = current; @@ -196,11 +191,9 @@ void *mca_mpool_base_alloc(size_t size, ompi_info_t *info) { /* one of the keys given to us by the user did not match any * mpools, so return an error */ - free(key); goto out; } } - free(key); } if(NULL == no_reg_function && 0 == reg_module_num)