X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/80b6c5866da8d8769469266da46c7ce979e23b8f..419bdaa87416d96b72f6848b04b130637df71ee3:/src/smpi/smpi_f77.c diff --git a/src/smpi/smpi_f77.c b/src/smpi/smpi_f77.c index 2f84829faf..c467cc84f0 100644 --- a/src/smpi/smpi_f77.c +++ b/src/smpi/smpi_f77.c @@ -28,7 +28,7 @@ static int new_comm(MPI_Comm comm) { static MPI_Comm get_comm(int comm) { if(comm == -2) { return MPI_COMM_SELF; - } else if(comm >= 0) { + } else if(comm_lookup && comm >= 0 && comm < (int)xbt_dynar_length(comm_lookup)) { return *(MPI_Comm*)xbt_dynar_get_ptr(comm_lookup, comm); } return MPI_COMM_NULL; @@ -79,7 +79,7 @@ void mpi_init__(int* ierr) { comm_lookup = xbt_dynar_new(sizeof(MPI_Comm), NULL); new_comm(MPI_COMM_WORLD); - request_lookup = xbt_dict_new(); + request_lookup = xbt_dict_new_homogeneous(NULL); datatype_lookup = xbt_dynar_new(sizeof(MPI_Datatype), NULL); new_datatype(MPI_BYTE); @@ -123,9 +123,13 @@ void mpi_init__(int* ierr) { void mpi_finalize__(int* ierr) { *ierr = MPI_Finalize(); xbt_dynar_free(&op_lookup); + op_lookup = NULL; xbt_dynar_free(&datatype_lookup); + datatype_lookup = NULL; xbt_dict_free(&request_lookup); + request_lookup = NULL; xbt_dynar_free(&comm_lookup); + comm_lookup = NULL; } void mpi_abort__(int* comm, int* errorcode, int* ierr) {