From 30544ab58b29faec9eefb6be57a0fce5f0d76775 Mon Sep 17 00:00:00 2001 From: Augustin Degomme Date: Tue, 6 Apr 2021 17:06:17 +0200 Subject: [PATCH] generalize mark_as_deleted call --- src/smpi/bindings/smpi_pmpi_group.cpp | 4 +++- src/smpi/bindings/smpi_pmpi_info.cpp | 1 + src/smpi/bindings/smpi_pmpi_op.cpp | 2 ++ src/smpi/bindings/smpi_pmpi_request.cpp | 1 + src/smpi/bindings/smpi_pmpi_type.cpp | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/smpi/bindings/smpi_pmpi_group.cpp b/src/smpi/bindings/smpi_pmpi_group.cpp index ea9898fd74..a3d37984e6 100644 --- a/src/smpi/bindings/smpi_pmpi_group.cpp +++ b/src/smpi/bindings/smpi_pmpi_group.cpp @@ -18,8 +18,10 @@ int PMPI_Group_free(MPI_Group * group) { CHECK_NULL(1, MPI_ERR_ARG, group) CHECK_MPI_NULL(1, MPI_GROUP_NULL, MPI_ERR_GROUP, *group) - if(*group != MPI_COMM_WORLD->group() && *group != MPI_GROUP_EMPTY) + if(*group != MPI_COMM_WORLD->group() && *group != MPI_GROUP_EMPTY){ + (*group)->mark_as_deleted(); simgrid::smpi::Group::unref(*group); + } *group = MPI_GROUP_NULL; return MPI_SUCCESS; } diff --git a/src/smpi/bindings/smpi_pmpi_info.cpp b/src/smpi/bindings/smpi_pmpi_info.cpp index fe4ae456b1..0cacf3c1a3 100644 --- a/src/smpi/bindings/smpi_pmpi_info.cpp +++ b/src/smpi/bindings/smpi_pmpi_info.cpp @@ -27,6 +27,7 @@ int PMPI_Info_set( MPI_Info info, const char *key, const char *value){ int PMPI_Info_free( MPI_Info *info){ CHECK_NULL(1, MPI_ERR_ARG, info) CHECK_INFO(1, *info) + (*info)->mark_as_deleted(); simgrid::smpi::Info::unref(*info); *info=MPI_INFO_NULL; return MPI_SUCCESS; diff --git a/src/smpi/bindings/smpi_pmpi_op.cpp b/src/smpi/bindings/smpi_pmpi_op.cpp index a6200c1d98..653cfd75ba 100644 --- a/src/smpi/bindings/smpi_pmpi_op.cpp +++ b/src/smpi/bindings/smpi_pmpi_op.cpp @@ -5,6 +5,7 @@ #include "private.hpp" #include "smpi_op.hpp" +#include "smpi_comm.hpp" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_pmpi); @@ -24,6 +25,7 @@ int PMPI_Op_free(MPI_Op * 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; diff --git a/src/smpi/bindings/smpi_pmpi_request.cpp b/src/smpi/bindings/smpi_pmpi_request.cpp index 14d2bd200b..fb30222571 100644 --- a/src/smpi/bindings/smpi_pmpi_request.cpp +++ b/src/smpi/bindings/smpi_pmpi_request.cpp @@ -163,6 +163,7 @@ int PMPI_Request_free(MPI_Request * request) smpi_bench_end(); if (*request != MPI_REQUEST_NULL) { + (*request)->mark_as_deleted(); simgrid::smpi::Request::unref(request); *request = MPI_REQUEST_NULL; retval = MPI_SUCCESS; diff --git a/src/smpi/bindings/smpi_pmpi_type.cpp b/src/smpi/bindings/smpi_pmpi_type.cpp index aac1aed1d4..04208cb9c4 100644 --- a/src/smpi/bindings/smpi_pmpi_type.cpp +++ b/src/smpi/bindings/smpi_pmpi_type.cpp @@ -17,6 +17,7 @@ int PMPI_Type_free(MPI_Datatype * datatype) if (*datatype == MPI_DATATYPE_NULL || (*datatype)->flags() & DT_FLAG_PREDEFINED) { return MPI_ERR_TYPE; } else { + (*datatype)->mark_as_deleted(); simgrid::smpi::Datatype::unref(*datatype); *datatype=MPI_DATATYPE_NULL; return MPI_SUCCESS; -- 2.20.1