X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/526747a744ea55946618ab192e053cd508947259..ada64beec413781e8e11cc6106c5411962cac0fb:/src/simdag/sd_global.c diff --git a/src/simdag/sd_global.c b/src/simdag/sd_global.c index 30f5d47ca7..87a0995d68 100644 --- a/src/simdag/sd_global.c +++ b/src/simdag/sd_global.c @@ -52,7 +52,7 @@ void SD_init(int *argc, char **argv) s_SD_task_t task; - xbt_assert0(!SD_INITIALISED(), "SD_init() already called"); + xbt_assert(!SD_INITIALISED(), "SD_init() already called"); /* Connect our log channels: that must be done manually under windows */ XBT_LOG_CONNECT(sd_kernel, sd); @@ -98,8 +98,8 @@ void SD_init(int *argc, char **argv) #endif XBT_DEBUG("ADD SD LEVELS"); - SD_HOST_LEVEL = xbt_lib_add_level(host_lib,free); - SD_LINK_LEVEL = xbt_lib_add_level(link_lib,free); + SD_HOST_LEVEL = xbt_lib_add_level(host_lib,__SD_workstation_destroy); + SD_LINK_LEVEL = xbt_lib_add_level(link_lib,__SD_link_destroy); } /** @@ -185,7 +185,7 @@ void SD_create_environment(const char *platform_file) void **surf_workstation = NULL; void **surf_link = NULL; - platform_filename = bprintf("%s",platform_file); + platform_filename = xbt_strdup(platform_file); // Reset callbacks surf_parse_reset_callbacks(); @@ -397,6 +397,7 @@ void SD_exit(void) #ifdef HAVE_TRACING TRACE_surf_release(); #endif + if (SD_INITIALISED()) { XBT_DEBUG("Destroying workstation and link dictionaries..."); @@ -420,6 +421,14 @@ void SD_exit(void) xbt_swag_free(sd_global->done_task_set); xbt_swag_free(sd_global->failed_task_set); + XBT_DEBUG("Exiting Surf..."); + surf_exit(); + + // Exit the LIB host_lib + xbt_lib_free(&host_lib); + xbt_lib_free(&link_lib); + xbt_lib_free(&as_router_lib); + xbt_free(sd_global); sd_global = NULL; @@ -431,8 +440,6 @@ void SD_exit(void) jedule_sd_cleanup(); #endif - XBT_DEBUG("Exiting Surf..."); - surf_exit(); } else { XBT_WARN("SD_exit() called, but SimDag is not running"); /* we cannot use exceptions here because xbt is not running! */