From e2ee13df0f48cec420af0c2ed9090cb9c07d0113 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Tue, 12 May 2020 18:21:19 +0200 Subject: [PATCH] A little of garbage collection --- src/database/open.c | 2 +- src/main/server.c | 28 +++++++++++++++++++++++----- src/mkv/utils.c | 6 +++--- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/database/open.c b/src/database/open.c index c1b65d44..497d71ff 100644 --- a/src/database/open.c +++ b/src/database/open.c @@ -48,7 +48,7 @@ __close_databases(void) free((void *) item->name); free(item); } - LOG_INFO_SCT("DB", "%s", "All db closed"); + LOG_INFO_SCT("GARBAGE", "%s", "All db closed"); stack_free(&db_stack); } diff --git a/src/main/server.c b/src/main/server.c index 3e564323..5a5d969d 100644 --- a/src/main/server.c +++ b/src/main/server.c @@ -35,6 +35,25 @@ REG_ADD(load_x11) #endif REG_END() +char *db_path = NULL; +char *kara_dir = NULL; +char *conf_file = NULL; +struct lkt_state srv; + +static void +__garbage_collect(void) +{ + if (db_path) + free(db_path); + if (kara_dir) + free(kara_dir); + if (conf_file) + free(conf_file); + if (srv.win.free) + srv.win.free(&srv.win); + LOG_INFO_SCT("GARBAGE", "%s", "Cleaning a bit with global variables"); +} + static void __sig_exit(int sig) { @@ -71,11 +90,11 @@ normal_launch: executable_name = exe; /* Init the server */ - struct lkt_state srv; int autoclear, check_exclusive = 1; - char *db_path = safe_malloc(PATH_MAX * sizeof(char)); - char *kara_dir = safe_malloc(PATH_MAX * sizeof(char)); - char conf_file[PATH_MAX]; + assert(!atexit(__garbage_collect)); + db_path = safe_malloc(PATH_MAX * sizeof(char)); + kara_dir = safe_malloc(PATH_MAX * sizeof(char)); + conf_file = safe_malloc(PATH_MAX * sizeof(char)); memset(&srv, 0, sizeof(struct lkt_state)); /* Initialize the system. */ @@ -105,6 +124,5 @@ normal_launch: RETURN_IF(load_module_by_name(&srv, "player", &srv.win), "Can't load module player", 3); RETURN_IF(load_module_by_name(&srv, "repo", &srv.repo), "Can't load module repo", 3); lkt_listen(&srv); - srv.win.free(&srv.win); return EXIT_FAILURE; } diff --git a/src/mkv/utils.c b/src/mkv/utils.c index bd721a06..2e219741 100644 --- a/src/mkv/utils.c +++ b/src/mkv/utils.c @@ -12,7 +12,7 @@ mdtcat(struct kara_metadata *mdt, char **ret) size_t size = strlen(mdt->song_name) + strlen(mdt->source_name) + strlen(mdt->category) + strlen(mdt->language) + strlen(mdt->author_name) + strlen(mdt->song_type) + - /* Null byte */ 1 + /* Separators */ 12 + + /* Null byte */ 1 + /* Separators */ 12 + 5 + long_length(mdt->song_number); *ret = malloc(sizeof(char) * size); if (!*ret) { @@ -20,7 +20,7 @@ mdtcat(struct kara_metadata *mdt, char **ret) return; } - safe_snprintf(*ret, size, "%s - %s / %s - %s%d - %s", mdt->category, + safe_snprintf(*ret, size, "%s - %s / %s - %s%d - %s [ %s ]", mdt->category, mdt->language, mdt->source_name, mdt->song_type, - mdt->song_number, mdt->song_name); + mdt->song_number, mdt->song_name, mdt->author_name); } -- GitLab