X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/cff982bd049d26d7acbd0e23324e0de051b06d0d..321102577020b194dfb7ba89e48687952816849e:/src/smpi/mpi/smpi_errhandler.cpp diff --git a/src/smpi/mpi/smpi_errhandler.cpp b/src/smpi/mpi/smpi_errhandler.cpp index bb19ffc0a2..e795736ce5 100644 --- a/src/smpi/mpi/smpi_errhandler.cpp +++ b/src/smpi/mpi/smpi_errhandler.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2022. 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. */ @@ -8,10 +8,8 @@ #include -simgrid::smpi::Errhandler mpi_MPI_ERRORS_RETURN; -MPI_Errhandler MPI_ERRORS_RETURN=&mpi_MPI_ERRORS_RETURN; -simgrid::smpi::Errhandler mpi_MPI_ERRORS_ARE_FATAL; -MPI_Errhandler MPI_ERRORS_ARE_FATAL=&mpi_MPI_ERRORS_ARE_FATAL; +simgrid::smpi::Errhandler smpi_MPI_ERRORS_RETURN; +simgrid::smpi::Errhandler smpi_MPI_ERRORS_ARE_FATAL; namespace simgrid{ namespace smpi{ @@ -45,11 +43,15 @@ void Errhandler::ref() } void Errhandler::unref(Errhandler* errhandler){ + if(errhandler == MPI_ERRORS_ARE_FATAL || errhandler == MPI_ERRORS_RETURN) + return; errhandler->refcount_--; if(errhandler->refcount_==0){ + F2C::free_f(errhandler->f2c_id()); delete errhandler; } } } + }