From: alegrand Date: Tue, 30 Aug 2005 21:35:03 +0000 (+0000) Subject: getting rid of memleaks. X-Git-Tag: v3.3~3680 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/614783abcb28c771ad302252888494fe36da2bd8 getting rid of memleaks. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1677 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/msg/global.c b/src/msg/global.c index 6bf0f87a9a..7e68c31f65 100644 --- a/src/msg/global.c +++ b/src/msg/global.c @@ -514,6 +514,7 @@ MSG_error_t MSG_clean(void) fclose(msg_global->paje_output); msg_global->paje_output = NULL; } + msg_config_finalize(); free(msg_global); surf_exit(); diff --git a/src/msg/msg_config.c b/src/msg/msg_config.c index f7cd0942dc..50cb176d9f 100644 --- a/src/msg/msg_config.c +++ b/src/msg/msg_config.c @@ -50,6 +50,15 @@ void msg_config_init(void) { xbt_cfg_set_string(_msg_cfg_set,"surf_workstation_model", "CLM03"); } +void msg_config_finalize(void) { + + if (!_msg_init_status) + return; /* Not initialized yet. Nothing to do */ + + xbt_cfg_free(&_msg_cfg_set); + _msg_init_status = 0; +} + /** \brief set a configuration variable * * Currently existing configuation variable: diff --git a/src/msg/private.h b/src/msg/private.h index 559d77453d..01be63671d 100644 --- a/src/msg/private.h +++ b/src/msg/private.h @@ -93,6 +93,7 @@ extern MSG_Global_t msg_global; /************************** Configuration support ********************************/ void msg_config_init(void); /* create the config set, call this before use! */ +void msg_config_finalize(void); /* destroy the config set, call this at cleanup. */ extern int _msg_init_status; /* 0: beginning of time; 1: pre-inited (cfg_set created); 2: inited (running) */ diff --git a/src/surf/surf_timer.c b/src/surf/surf_timer.c index 35ddfa882b..678af824d9 100644 --- a/src/surf/surf_timer.c +++ b/src/surf/surf_timer.c @@ -159,6 +159,9 @@ static int action_is_suspended(surf_action_t action) static void finalize(void) { + tmgr_trace_free(empty_trace); + empty_trace = NULL; + xbt_swag_free(command_pending); xbt_swag_free(command_to_run); diff --git a/src/xbt/context.c b/src/xbt/context.c index 0d3f5876e9..e67c2ce1eb 100644 --- a/src/xbt/context.c +++ b/src/xbt/context.c @@ -99,6 +99,7 @@ static void xbt_context_destroy(xbt_context_t context) pthread_mutex_destroy(&(context->mutex)); pthread_cond_destroy(&(context->cond)); #endif + if(context->exception) free(context->exception); free(context); return; } @@ -320,7 +321,6 @@ void xbt_context_free(xbt_context_t context) for(i=0;iargc; i++) if(context->argv[i]) free(context->argv[i]); if(context->argv) free(context->argv); - if(context->exception) free(context->exception); if(context->cleanup_func) context->cleanup_func(context->cleanup_arg);