X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f3b7e5f4b4d7c87ee3e8827313ec966ea8fc8387..HEAD:/src/smpi/bindings/smpi_pmpi_op.cpp diff --git a/src/smpi/bindings/smpi_pmpi_op.cpp b/src/smpi/bindings/smpi_pmpi_op.cpp index 8c14f06d5b..e693e10939 100644 --- a/src/smpi/bindings/smpi_pmpi_op.cpp +++ b/src/smpi/bindings/smpi_pmpi_op.cpp @@ -1,10 +1,11 @@ -/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2023. 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. */ #include "private.hpp" #include "smpi_op.hpp" +#include "smpi_comm.hpp" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_pmpi); @@ -22,13 +23,16 @@ int PMPI_Op_free(MPI_Op * op) { CHECK_NULL(1, MPI_ERR_ARG, op) CHECK_MPI_NULL(1, MPI_OP_NULL, MPI_ERR_OP, *op) + if((*op)->is_predefined()) + return MPI_ERR_OP; + (*op)->mark_as_deleted(); simgrid::smpi::Op::unref(op); *op = MPI_OP_NULL; return MPI_SUCCESS; } int PMPI_Op_commutative(MPI_Op op, int* commute){ - CHECK_OP(1) + CHECK_MPI_NULL(1, MPI_OP_NULL, MPI_ERR_OP, op) CHECK_NULL(1, MPI_ERR_ARG, commute) *commute = op->is_commutative(); return MPI_SUCCESS;