From 9381566f3c9f1e7bd3c8e2ec4c0a186678957d51 Mon Sep 17 00:00:00 2001 From: Augustin Degomme Date: Mon, 6 Oct 2014 10:40:29 +0200 Subject: [PATCH] store the int in a long-enough char array --- src/smpi/smpi_comm.c | 16 ++++++++-------- src/smpi/smpi_mpi_dt.c | 15 ++++++++------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/smpi/smpi_comm.c b/src/smpi/smpi_comm.c index d534a57983..19fadf3b0f 100644 --- a/src/smpi/smpi_comm.c +++ b/src/smpi/smpi_comm.c @@ -17,8 +17,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_comm, smpi, "Logging specific to SMPI (comm)"); - - +//number of bytes to hold an int converted in char* +#define INTSIZEDCHAR (sizeof(int)*CHAR_BIT-1)/3 + 3 xbt_dict_t smpi_comm_keyvals = NULL; int comm_keyval_id=MPI_TAG_UB+1;//avoid collisions @@ -536,7 +536,7 @@ void smpi_comm_init_smp(MPI_Comm comm){ } int smpi_comm_attr_delete(MPI_Comm comm, int keyval){ - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", keyval); smpi_comm_key_elem elem = xbt_dict_get_or_null(smpi_comm_keyvals, (const char*)tmpkey); if(!elem) @@ -558,7 +558,7 @@ int smpi_comm_attr_delete(MPI_Comm comm, int keyval){ } int smpi_comm_attr_get(MPI_Comm comm, int keyval, void* attr_value, int* flag){ - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", keyval); smpi_comm_key_elem elem = xbt_dict_get_or_null(smpi_comm_keyvals, (const char*)tmpkey); if(!elem) @@ -569,7 +569,7 @@ int smpi_comm_attr_get(MPI_Comm comm, int keyval, void* attr_value, int* flag){ return MPI_SUCCESS; } TRY { - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", keyval); *(void**)attr_value = xbt_dict_get(comm->attributes, (const char*)tmpkey); *flag=1; @@ -585,7 +585,7 @@ int smpi_comm_attr_get(MPI_Comm comm, int keyval, void* attr_value, int* flag){ int smpi_comm_attr_put(MPI_Comm comm, int keyval, void* attr_value){ if(!smpi_comm_keyvals) smpi_comm_keyvals = xbt_dict_new(); - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", keyval); smpi_comm_key_elem elem = xbt_dict_get_or_null(smpi_comm_keyvals, (const char*)tmpkey); if(!elem ) @@ -616,7 +616,7 @@ int smpi_comm_keyval_create(MPI_Comm_copy_attr_function* copy_fn, MPI_Comm_delet value->delete_fn=delete_fn; *keyval = comm_keyval_id; - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", *keyval); xbt_dict_set(smpi_comm_keyvals,(const char*)tmpkey,(void*)value, NULL); comm_keyval_id++; @@ -628,7 +628,7 @@ int smpi_comm_keyval_free(int* keyval){ smpi_comm_key_elem elem = xbt_dict_get_or_null(smpi_comm_keyvals, (const char*)keyval); if(!elem) return MPI_ERR_ARG; - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", *keyval); xbt_dict_remove(smpi_comm_keyvals, (const char*)tmpkey); xbt_free(elem); diff --git a/src/smpi/smpi_mpi_dt.c b/src/smpi/smpi_mpi_dt.c index 363651655b..860e48c532 100644 --- a/src/smpi/smpi_mpi_dt.c +++ b/src/smpi/smpi_mpi_dt.c @@ -10,7 +10,7 @@ #include #include #include - +#include #include "private.h" #include "smpi_mpi_dt_private.h" #include "mc/mc.h" @@ -20,6 +20,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_mpi_dt, smpi, "Logging specific to SMPI (datatype)"); +#define INTSIZEDCHAR (sizeof(int)*CHAR_BIT-1)/3 + 3 xbt_dict_t smpi_type_keyvals = NULL; int type_keyval_id=0;//avoid collisions @@ -1669,7 +1670,7 @@ void smpi_op_apply(MPI_Op op, void *invec, void *inoutvec, int *len, } int smpi_type_attr_delete(MPI_Datatype type, int keyval){ - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", keyval); smpi_type_key_elem elem = xbt_dict_get_or_null(smpi_type_keyvals, (const char*)tmpkey); if(!elem) @@ -1691,7 +1692,7 @@ int smpi_type_attr_delete(MPI_Datatype type, int keyval){ } int smpi_type_attr_get(MPI_Datatype type, int keyval, void* attr_value, int* flag){ - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", keyval); smpi_type_key_elem elem = xbt_dict_get_or_null(smpi_type_keyvals, (const char*)tmpkey); if(!elem) @@ -1702,7 +1703,7 @@ int smpi_type_attr_get(MPI_Datatype type, int keyval, void* attr_value, int* fla return MPI_SUCCESS; } TRY { - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", keyval); *(void**)attr_value = xbt_dict_get(type->attributes, (const char*)tmpkey); *flag=1; @@ -1718,7 +1719,7 @@ int smpi_type_attr_get(MPI_Datatype type, int keyval, void* attr_value, int* fla int smpi_type_attr_put(MPI_Datatype type, int keyval, void* attr_value){ if(!smpi_type_keyvals) smpi_type_keyvals = xbt_dict_new(); - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", keyval); smpi_type_key_elem elem = xbt_dict_get_or_null(smpi_type_keyvals, (const char*)tmpkey); if(!elem ) @@ -1749,7 +1750,7 @@ int smpi_type_keyval_create(MPI_Type_copy_attr_function* copy_fn, MPI_Type_delet value->delete_fn=delete_fn; *keyval = type_keyval_id; - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", *keyval); xbt_dict_set(smpi_type_keyvals,(const char*)tmpkey,(void*)value, NULL); type_keyval_id++; @@ -1761,7 +1762,7 @@ int smpi_type_keyval_free(int* keyval){ smpi_type_key_elem elem = xbt_dict_get_or_null(smpi_type_keyvals, (const char*)keyval); if(!elem) return MPI_ERR_ARG; - char* tmpkey=xbt_malloc(sizeof(int)); + char* tmpkey=xbt_malloc(INTSIZEDCHAR); sprintf(tmpkey, "%d", *keyval); xbt_dict_remove(smpi_type_keyvals, (const char*)tmpkey); xbt_free(elem); -- 2.20.1