From 9d873cd12522bb6334ee3acff89384c03645f00d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christophe=20Thi=C3=A9ry?= Date: Mon, 18 Apr 2011 14:08:44 +0200 Subject: [PATCH] Fix a memory leak in MSG (hosts were not destroyed) --- src/msg/global.c | 8 ++++---- src/msg/host.c | 9 --------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/msg/global.c b/src/msg/global.c index 55d4b0aa29..0652b7eb85 100644 --- a/src/msg/global.c +++ b/src/msg/global.c @@ -80,7 +80,7 @@ void MSG_global_init(int *argc, char **argv) #endif XBT_DEBUG("ADD MSG LEVELS"); - MSG_HOST_LEVEL = xbt_lib_add_level(host_lib,free); + MSG_HOST_LEVEL = xbt_lib_add_level(host_lib, (void_f_pvoid_t) __MSG_host_destroy); } /** \defgroup m_channel_management Understanding channels @@ -185,9 +185,6 @@ MSG_error_t MSG_clean(void) MSG_process_killall(0); - free(msg_global); - msg_global = NULL; - /* initialization of the action module */ _MSG_action_exit(); @@ -197,6 +194,9 @@ MSG_error_t MSG_clean(void) SIMIX_clean(); + free(msg_global); + msg_global = NULL; + return MSG_OK; } diff --git a/src/msg/host.c b/src/msg/host.c index eef179c87b..d9739d2dce 100644 --- a/src/msg/host.c +++ b/src/msg/host.c @@ -127,21 +127,12 @@ m_host_t MSG_host_self(void) void __MSG_host_destroy(m_host_t host) { simdata_host_t simdata = NULL; - int i = 0; - char alias[MAX_ALIAS_NAME + 1] = { 0 }; /* buffer used to build the key of the mailbox */ xbt_assert((host != NULL), "Invalid parameters"); /* Clean Simulator data */ - /* SIMIX host will be cleaned when MSG_clean calls SIMIX_clean */ simdata = (host)->simdata; - for (i = 0; i < msg_global->max_channel; i++) { - sprintf(alias, "%s:%d", host->name, i); - MSG_mailbox_free((void *) (simdata->mailboxes[i])); - memset(alias, 0, MAX_ALIAS_NAME + 1); - } - if (msg_global->max_channel > 0) free(simdata->mailboxes); -- 2.20.1