-/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-2021. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
return MPI_ERR_TYPE;
} else {
simgrid::smpi::Datatype::unref(*datatype);
+ *datatype=MPI_DATATYPE_NULL;
return MPI_SUCCESS;
}
}
int PMPI_Type_dup(MPI_Datatype datatype, MPI_Datatype *newtype){
int retval = MPI_SUCCESS;
CHECK_MPI_NULL(1, MPI_DATATYPE_NULL, MPI_ERR_TYPE, datatype)
- *newtype = new simgrid::smpi::Datatype(datatype, &retval);
+ retval = datatype->clone(newtype);
//error when duplicating, free the new datatype
if(retval!=MPI_SUCCESS){
simgrid::smpi::Datatype::unref(*newtype);
{
CHECK_COUNT(1, count)
CHECK_MPI_NULL(4, MPI_DATATYPE_NULL, MPI_ERR_TYPE, old_type)
- int* blocklens=static_cast<int*>(xbt_malloc(blocklength*count*sizeof(int)));
+ auto* blocklens = static_cast<int*>(xbt_malloc(blocklength * count * sizeof(int)));
for (int i = 0; i < count; i++)
blocklens[i]=blocklength;
int retval = simgrid::smpi::Datatype::create_indexed(count, blocklens, indices, old_type, new_type);
MPI_Datatype* new_type) {
CHECK_COUNT(1, count)
CHECK_MPI_NULL(4, MPI_DATATYPE_NULL, MPI_ERR_TYPE, old_type)
- int* blocklens=(int*)xbt_malloc(blocklength*count*sizeof(int));
+ auto* blocklens = static_cast<int*>(xbt_malloc(blocklength * count * sizeof(int)));
for (int i = 0; i < count; i++)
blocklens[i] = blocklength;
int retval = simgrid::smpi::Datatype::create_hindexed(count, blocklens, indices, old_type, new_type);