*ierr = MPI_Info_set( smpi_info_f2c(*info), tkey, tvalue);
xbt_free(tkey);
+ xbt_free(tvalue);
}
void mpi_info_get_ (int* info,char *key,int* valuelen, char *value, int *flag, int* ierr, unsigned int keylen ){
void mpi_info_free_(int* info, int* ierr){
MPI_Info tmp = smpi_info_f2c(*info);
- const char* key;
- char* val;
- xbt_dict_cursor_t cursor;
- xbt_dict_foreach(tmp->info_dict,cursor,key,val) {
- xbt_free(val);
- }
*ierr = MPI_Info_free(&tmp);
if(*ierr == MPI_SUCCESS) {
free_info(*info);
if (info == nullptr)
return MPI_ERR_ARG;
*info = xbt_new(s_smpi_mpi_info_t, 1);
- (*info)->info_dict= xbt_dict_new_homogeneous(nullptr);
+ (*info)->info_dict= xbt_dict_new_homogeneous(xbt_free_f);
(*info)->refcount=1;
return MPI_SUCCESS;
}
if (info == nullptr || key == nullptr || value == nullptr)
return MPI_ERR_ARG;
- xbt_dict_set(info->info_dict, key, (void*)value, nullptr);
+ xbt_dict_set(info->info_dict, key, xbt_strdup(value), nullptr);
return MPI_SUCCESS;
}
if (info == nullptr || newinfo==nullptr)
return MPI_ERR_ARG;
*newinfo = xbt_new(s_smpi_mpi_info_t, 1);
- (*newinfo)->info_dict= xbt_dict_new_homogeneous(nullptr);
+ (*newinfo)->info_dict= xbt_dict_new_homogeneous(xbt_free_f);
(*newinfo)->refcount=1;
xbt_dict_cursor_t cursor = nullptr;
int *key;
void* data;
xbt_dict_foreach(info->info_dict,cursor,key,data){
- xbt_dict_set((*newinfo)->info_dict, reinterpret_cast<char*>(key), data, nullptr);
+ xbt_dict_set((*newinfo)->info_dict, reinterpret_cast<char*>(key), xbt_strdup(reinterpret_cast<char*>(data)), nullptr);
}
return MPI_SUCCESS;
}