if (*datatype == MPI_DATATYPE_NULL) {
retval = MPI_ERR_ARG;
} else {
- smpi_datatype_free(datatype);
+ smpi_datatype_unuse(*datatype);
retval = MPI_SUCCESS;
}
return retval;
} else {
*group = smpi_comm_group(comm);
if(*group!= smpi_comm_group(MPI_COMM_WORLD) && *group != MPI_GROUP_NULL
- && *group != smpi_comm_group(MPI_COMM_SELF) && *group != MPI_GROUP_EMPTY)
+ && *group != MPI_GROUP_EMPTY)
smpi_group_use(*group);
retval = MPI_SUCCESS;
}
*newcomm= MPI_COMM_NULL;
retval = MPI_SUCCESS;
}else{
-
+ smpi_group_use(group);
*newcomm = smpi_comm_new(group, NULL);
retval = MPI_SUCCESS;
}
MPI_Datatype types[3] = { MPI_LB, oldtype, MPI_UB };
s_smpi_mpi_struct_t* subtype = smpi_datatype_struct_create( blocks, disps, 3, types);
- smpi_datatype_create(newtype,oldtype->size, lb, lb + extent, 1 , subtype, DT_FLAG_VECTOR);
+ smpi_datatype_create(newtype,oldtype->size, lb, lb + extent, sizeof(s_smpi_mpi_struct_t) , subtype, DT_FLAG_VECTOR);
(*newtype)->flags &= ~DT_FLAG_COMMITED;
return MPI_SUCCESS;
int PMPI_Info_get_valuelen( MPI_Info info, char *key, int *valuelen, int *flag){
*flag=false;
- if (info == NULL || key == NULL || valuelen==NULL || *valuelen <0)
+ if (info == NULL || key == NULL || valuelen==NULL)
return MPI_ERR_ARG;
char* tmpvalue=(char*)xbt_dict_get_or_null(info->info_dict, key);
if(tmpvalue){