From f23be1900e1e6d0297407b0916cc37c97b1df269 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Thu, 11 Apr 2019 10:58:28 +0200 Subject: [PATCH] Memory leaks. --- src/smpi/mpi/smpi_request.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/smpi/mpi/smpi_request.cpp b/src/smpi/mpi/smpi_request.cpp index e175c70291..609e0366aa 100644 --- a/src/smpi/mpi/smpi_request.cpp +++ b/src/smpi/mpi/smpi_request.cpp @@ -92,6 +92,7 @@ void Request::unref(MPI_Request* request) if((*request)->refcount_==0){ if ((*request)->flags_ & MPI_REQ_GENERALIZED){ ((*request)->generalized_funcs)->free_fn(((*request)->generalized_funcs)->extra_state); + delete (*request)->generalized_funcs; }else{ Comm::unref((*request)->comm_); Datatype::unref((*request)->old_type_); @@ -1137,7 +1138,7 @@ int Request::grequest_start( MPI_Grequest_query_function *query_fn, MPI_Grequest (*request)->flags_ |= MPI_REQ_GENERALIZED; (*request)->flags_ |= MPI_REQ_PERSISTENT; (*request)->refcount_ = 1; - ((*request)->generalized_funcs)=xbt_new0(s_smpi_mpi_generalized_request_funcs_t ,1); + ((*request)->generalized_funcs) = new s_smpi_mpi_generalized_request_funcs_t; ((*request)->generalized_funcs)->query_fn=query_fn; ((*request)->generalized_funcs)->free_fn=free_fn; ((*request)->generalized_funcs)->cancel_fn=cancel_fn; @@ -1158,8 +1159,13 @@ int Request::grequest_complete( MPI_Request request){ } void Request::set_nbc_requests(MPI_Request* reqs, int size){ - nbc_requests_=reqs; - nbc_requests_size_=size; + nbc_requests_size_ = size; + if (size > 0) { + nbc_requests_ = reqs; + } else { + delete[] reqs; + nbc_requests_ = nullptr; + } } int Request::get_nbc_requests_size(){ -- 2.20.1