Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
protect against failed get
authorAugustin Degomme <degomme@wasabi>
Tue, 25 Sep 2018 09:25:47 +0000 (11:25 +0200)
committerAugustin Degomme <degomme@wasabi>
Tue, 25 Sep 2018 10:06:49 +0000 (12:06 +0200)
src/smpi/bindings/smpi_f77.cpp
src/smpi/bindings/smpi_f77_comm.cpp
src/smpi/bindings/smpi_f77_type.cpp

index 2dea2f4..5974537 100644 (file)
@@ -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){
index e4c7886..cfa7eaa 100644 (file)
@@ -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){
index 6848328..9a28137 100644 (file)
@@ -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){