From: Augustin Degomme Date: Tue, 25 Sep 2018 09:25:47 +0000 (+0200) Subject: protect against failed get X-Git-Tag: v3_21~42 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/b33bdec7b1eb6f5780141d3df13200c608d42ed7?hp=0afa6f83db585564c38145f745a2e52bd5cb3740 protect against failed get --- diff --git a/src/smpi/bindings/smpi_f77.cpp b/src/smpi/bindings/smpi_f77.cpp index 2dea2f48da..597453744e 100644 --- a/src/smpi/bindings/smpi_f77.cpp +++ b/src/smpi/bindings/smpi_f77.cpp @@ -117,7 +117,8 @@ void mpi_get_count_(MPI_Status * status, int* datatype, int *count, int* ierr){ void mpi_attr_get_(int* comm, int* keyval, int* attr_value, int* flag, int* ierr ){ int* value = nullptr; *ierr = MPI_Attr_get(simgrid::smpi::Comm::f2c(*comm), *keyval, &value, flag); - *attr_value = *value; + if(*flag == 1) + *attr_value=*value; } void mpi_error_string_(int* errorcode, char* string, int* resultlen, int* ierr){ @@ -228,7 +229,8 @@ void mpi_win_get_group_(int* win, int* group, int* ierr){ void mpi_win_get_attr_(int* win, int* type_keyval, int* attribute_val, int* flag, int* ierr){ int* value = nullptr; *ierr = MPI_Win_get_attr(simgrid::smpi::Win::f2c(*win), *type_keyval, &value, flag); - *attribute_val=*value; + if (*flag == 1) + *attribute_val = *value; } void mpi_win_set_attr_(int* win, int* type_keyval, void* att, int* ierr){ diff --git a/src/smpi/bindings/smpi_f77_comm.cpp b/src/smpi/bindings/smpi_f77_comm.cpp index e4c7886f49..cfa7eaa7d2 100644 --- a/src/smpi/bindings/smpi_f77_comm.cpp +++ b/src/smpi/bindings/smpi_f77_comm.cpp @@ -74,7 +74,8 @@ void mpi_comm_create_group_ (int* comm, int* group, int i, int* comm_out, int* i void mpi_comm_get_attr_ (int* comm, int* comm_keyval, int *attribute_val, int *flag, int* ierr){ int* value = nullptr; *ierr = MPI_Comm_get_attr (simgrid::smpi::Comm::f2c(*comm), *comm_keyval, &value, flag); - *attribute_val = *value; + if (*flag == 1) + *attribute_val = *value; } void mpi_comm_set_attr_ (int* comm, int* comm_keyval, void *attribute_val, int* ierr){ diff --git a/src/smpi/bindings/smpi_f77_type.cpp b/src/smpi/bindings/smpi_f77_type.cpp index 6848328e3e..9a28137385 100644 --- a/src/smpi/bindings/smpi_f77_type.cpp +++ b/src/smpi/bindings/smpi_f77_type.cpp @@ -59,7 +59,8 @@ void mpi_type_get_name_ (int* datatype, char * name, int* len, int* ierr){ void mpi_type_get_attr_ (int* type, int* type_keyval, int *attribute_val, int* flag, int* ierr){ int* value = nullptr; *ierr = MPI_Type_get_attr ( simgrid::smpi::Datatype::f2c(*type), *type_keyval, &value, flag); - *attribute_val = *value; + if (*flag == 1) + *attribute_val = *value; } void mpi_type_set_attr_ (int* type, int* type_keyval, void *attribute_val, int* ierr){