X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/29a3b2869c0075fc75e8ccc66fc1d9c4c8bf6a85..98236eba13100727f2421d07b097cf84416ef74e:/src/smpi/bindings/smpi_f77_type.cpp diff --git a/src/smpi/bindings/smpi_f77_type.cpp b/src/smpi/bindings/smpi_f77_type.cpp index ffd647b1c7..e7207ff682 100644 --- a/src/smpi/bindings/smpi_f77_type.cpp +++ b/src/smpi/bindings/smpi_f77_type.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2019. 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. */ @@ -52,8 +52,8 @@ void mpi_type_set_name_ (int* datatype, char * name, int* ierr, int size){ void mpi_type_get_name_ (int* datatype, char * name, int* len, int* ierr){ *ierr = MPI_Type_get_name(simgrid::smpi::Datatype::f2c(*datatype),name,len); - if(*len>0) - name[*len]=' '; + for(int i = *len; iadd_f(); } + delete[] indices_aint; } void mpi_type_create_hindexed_(int* count, int* blocklens, MPI_Aint* indices, int* old_type, int* newtype, int* ierr){ @@ -181,18 +185,21 @@ void mpi_type_create_indexed_block_ (int* count, int* blocklength, int* indices, } } -void mpi_type_struct_ (int* count, int* blocklens, MPI_Aint* indices, int* old_types, int* newtype, int* ierr) { +void mpi_type_struct_ (int* count, int* blocklens, int* indices, int* old_types, int* newtype, int* ierr) { MPI_Datatype tmp; int i=0; MPI_Datatype* types = static_cast(xbt_malloc(*count*sizeof(MPI_Datatype))); + MPI_Aint* indices_aint=new MPI_Aint[*count]; for(i=0; i< *count; i++){ + indices_aint[i]=indices[i]; types[i] = simgrid::smpi::Datatype::f2c(old_types[i]); } - *ierr = MPI_Type_struct(*count, blocklens, indices, types, &tmp); + *ierr = MPI_Type_struct(*count, blocklens, indices_aint, types, &tmp); if(*ierr == MPI_SUCCESS) { *newtype = tmp->add_f(); } xbt_free(types); + delete[] indices_aint; } void mpi_type_create_struct_(int* count, int* blocklens, MPI_Aint* indices, int* old_types, int* newtype, int* ierr){