void * value;
int flag;
if(smpi_comm_attr_get(comm, keyval, &value, &flag)==MPI_SUCCESS){
- int ret = elem->delete_fn(comm, keyval, &value, &flag);
+ int ret = elem->delete_fn(comm, keyval, value, &flag);
if(ret!=MPI_SUCCESS) return ret;
}
}
return MPI_SUCCESS;
}
TRY {
- char* tmpkey=xbt_malloc(INTSIZEDCHAR);
- sprintf(tmpkey, "%d", keyval);
*(void**)attr_value = xbt_dict_get(comm->attributes, (const char*)tmpkey);
*flag=1;
}
void* value;
smpi_comm_attr_get(comm, keyval, &value, &flag);
if(flag && elem->delete_fn!=MPI_NULL_DELETE_FN){
- int ret = elem->delete_fn(comm, keyval, &value, &flag);
+ int ret = elem->delete_fn(comm, keyval, value, &flag);
if(ret!=MPI_SUCCESS) return ret;
}
if(comm->attributes==NULL)
}
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(INTSIZEDCHAR);
sprintf(tmpkey, "%d", *keyval);
+ smpi_comm_key_elem elem = xbt_dict_get_or_null(smpi_comm_keyvals, (const char*)tmpkey);
+ if(!elem){
+ xbt_free(tmpkey);
+ return MPI_ERR_ARG;
+ }
xbt_dict_remove(smpi_comm_keyvals, (const char*)tmpkey);
xbt_free(elem);
xbt_free(tmpkey);