From 2db3de1844e7f297bbec1eb481f4a0122fc8d444 Mon Sep 17 00:00:00 2001 From: Augustin Degomme Date: Sat, 3 Apr 2021 15:48:18 +0200 Subject: [PATCH] Keyvals : handle MPI_KEYVAL_INVALID --- include/smpi/smpi.h | 2 +- src/smpi/bindings/smpi_pmpi.cpp | 2 ++ src/smpi/bindings/smpi_pmpi_comm.cpp | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/include/smpi/smpi.h b/include/smpi/smpi.h index 4544882043..e808ed73e7 100644 --- a/include/smpi/smpi.h +++ b/include/smpi/smpi.h @@ -153,6 +153,7 @@ enum ERROR_ENUM { #define MPI_TAG_LB -6 #define MPI_UNIVERSE_SIZE -7 #define MPI_LASTUSEDCODE -8 +#define MPI_KEYVAL_INVALID -9 #define MPI_MODE_NOSTORE 0x1 #define MPI_MODE_NOPUT 0x2 @@ -160,7 +161,6 @@ enum ERROR_ENUM { #define MPI_MODE_NOSUCCEED 0x8 #define MPI_MODE_NOCHECK 0x10 -#define MPI_KEYVAL_INVALID 0 #define MPI_NULL_COPY_FN NULL #define MPI_NULL_DELETE_FN NULL #define MPI_ERR_LASTCODE 74 diff --git a/src/smpi/bindings/smpi_pmpi.cpp b/src/smpi/bindings/smpi_pmpi.cpp index 06567f1d8c..53fb39410b 100644 --- a/src/smpi/bindings/smpi_pmpi.cpp +++ b/src/smpi/bindings/smpi_pmpi.cpp @@ -243,6 +243,8 @@ int PMPI_Keyval_create(MPI_Copy_function* copy_fn, MPI_Delete_function* delete_f } int PMPI_Keyval_free(int* keyval) { + CHECK_NULL(1, MPI_ERR_ARG, keyval) + CHECK_MPI_NULL(1, MPI_KEYVAL_INVALID, MPI_ERR_KEYVAL, *keyval) return simgrid::smpi::Keyval::keyval_free(keyval); } diff --git a/src/smpi/bindings/smpi_pmpi_comm.cpp b/src/smpi/bindings/smpi_pmpi_comm.cpp index 0e64a85fe1..d00de2d0fb 100644 --- a/src/smpi/bindings/smpi_pmpi_comm.cpp +++ b/src/smpi/bindings/smpi_pmpi_comm.cpp @@ -220,6 +220,7 @@ int PMPI_Comm_test_inter(MPI_Comm comm, int* flag){ int PMPI_Attr_delete(MPI_Comm comm, int keyval) { CHECK_COMM(1) + CHECK_MPI_NULL(2, MPI_KEYVAL_INVALID, MPI_ERR_KEYVAL, keyval) if(keyval == MPI_TAG_UB||keyval == MPI_HOST||keyval == MPI_IO ||keyval == MPI_WTIME_IS_GLOBAL||keyval == MPI_APPNUM ||keyval == MPI_UNIVERSE_SIZE||keyval == MPI_LASTUSEDCODE) return MPI_ERR_ARG; @@ -237,6 +238,7 @@ int PMPI_Attr_get(MPI_Comm comm, int keyval, void* attr_value, int* flag) { CHECK_NULL(4, MPI_ERR_ARG, flag) *flag = 0; CHECK_COMM(1) + CHECK_MPI_NULL(2, MPI_KEYVAL_INVALID, MPI_ERR_KEYVAL, keyval) switch (keyval) { case MPI_HOST: @@ -269,6 +271,7 @@ int PMPI_Attr_get(MPI_Comm comm, int keyval, void* attr_value, int* flag) { int PMPI_Attr_put(MPI_Comm comm, int keyval, void* attr_value) { CHECK_COMM(1) + CHECK_MPI_NULL(2, MPI_KEYVAL_INVALID, MPI_ERR_KEYVAL, keyval) if(keyval == MPI_TAG_UB||keyval == MPI_HOST||keyval == MPI_IO ||keyval == MPI_WTIME_IS_GLOBAL||keyval == MPI_APPNUM ||keyval == MPI_UNIVERSE_SIZE||keyval == MPI_LASTUSEDCODE) return MPI_ERR_ARG; -- 2.20.1