From a211c55cce1de5dc75fd439668427233cff8ac29 Mon Sep 17 00:00:00 2001 From: Jeff Squyres Date: Fri, 4 Sep 2009 05:18:49 +0000 Subject: [PATCH] Fix some attribute error detection problems reported by Lisandro Dalcin. This commit was SVN r21941. --- ompi/mpi/c/comm_get_attr.c | 5 +++++ ompi/mpi/c/type_get_attr.c | 3 +++ ompi/mpi/c/win_get_attr.c | 2 ++ 3 files changed, 10 insertions(+) diff --git a/ompi/mpi/c/comm_get_attr.c b/ompi/mpi/c/comm_get_attr.c index 80a7457667..9a0d6c1d24 100644 --- a/ompi/mpi/c/comm_get_attr.c +++ b/ompi/mpi/c/comm_get_attr.c @@ -9,6 +9,7 @@ * University of Stuttgart. All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. * All rights reserved. + * Copyright (c) 2009 Cisco Systems, Inc. All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -49,6 +50,10 @@ int MPI_Comm_get_attr(MPI_Comm comm, int comm_keyval, OMPI_ERR_INIT_FINALIZE(FUNC_NAME); if ((NULL == attribute_val) || (NULL == flag)) { return OMPI_ERRHANDLER_INVOKE(comm, MPI_ERR_ARG, FUNC_NAME); + } else if (ompi_comm_invalid(comm)) { + return OMPI_ERRHANDLER_INVOKE(comm, MPI_ERR_COMM, FUNC_NAME); + } else if (MPI_KEYVAL_INVALID == comm_keyval) { + return OMPI_ERRHANDLER_INVOKE(comm, MPI_ERR_KEYVAL, FUNC_NAME); } } diff --git a/ompi/mpi/c/type_get_attr.c b/ompi/mpi/c/type_get_attr.c index dfd30203f2..0705ae8c63 100644 --- a/ompi/mpi/c/type_get_attr.c +++ b/ompi/mpi/c/type_get_attr.c @@ -57,6 +57,9 @@ int MPI_Type_get_attr (MPI_Datatype type, return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_ARG, FUNC_NAME); + } else if (MPI_KEYVAL_INVALID == type_keyval) { + return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_KEYVAL, + FUNC_NAME); } } diff --git a/ompi/mpi/c/win_get_attr.c b/ompi/mpi/c/win_get_attr.c index 47087efab4..c943bfd72b 100644 --- a/ompi/mpi/c/win_get_attr.c +++ b/ompi/mpi/c/win_get_attr.c @@ -48,6 +48,8 @@ int MPI_Win_get_attr(MPI_Win win, int win_keyval, return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_WIN, FUNC_NAME); } else if ((NULL == attribute_val) || (NULL == flag)) { return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_ARG, FUNC_NAME); + } else if (MPI_KEYVAL_INVALID == win_keyval) { + return OMPI_ERRHANDLER_INVOKE(win, MPI_ERR_KEYVAL, FUNC_NAME); } }