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);
#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);
}
/**
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();
#ifdef HAVE_TRACING
TRACE_surf_release();
#endif
+
if (SD_INITIALISED()) {
XBT_DEBUG("Destroying workstation and link dictionaries...");
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;
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! */