Skip to content
Extraits de code Groupes Projets
Vérifiée Valider e2ee13df rédigé par Kubat's avatar Kubat
Parcourir les fichiers

A little of garbage collection

parent 0705e534
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!87Resolve "Segfault on exit"
...@@ -48,7 +48,7 @@ __close_databases(void) ...@@ -48,7 +48,7 @@ __close_databases(void)
free((void *) item->name); free((void *) item->name);
free(item); free(item);
} }
LOG_INFO_SCT("DB", "%s", "All db closed"); LOG_INFO_SCT("GARBAGE", "%s", "All db closed");
stack_free(&db_stack); stack_free(&db_stack);
} }
......
...@@ -35,6 +35,25 @@ REG_ADD(load_x11) ...@@ -35,6 +35,25 @@ REG_ADD(load_x11)
#endif #endif
REG_END() 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 static void
__sig_exit(int sig) __sig_exit(int sig)
{ {
...@@ -71,11 +90,11 @@ normal_launch: ...@@ -71,11 +90,11 @@ normal_launch:
executable_name = exe; executable_name = exe;
/* Init the server */ /* Init the server */
struct lkt_state srv;
int autoclear, check_exclusive = 1; int autoclear, check_exclusive = 1;
char *db_path = safe_malloc(PATH_MAX * sizeof(char)); assert(!atexit(__garbage_collect));
char *kara_dir = safe_malloc(PATH_MAX * sizeof(char)); db_path = safe_malloc(PATH_MAX * sizeof(char));
char conf_file[PATH_MAX]; kara_dir = safe_malloc(PATH_MAX * sizeof(char));
conf_file = safe_malloc(PATH_MAX * sizeof(char));
memset(&srv, 0, sizeof(struct lkt_state)); memset(&srv, 0, sizeof(struct lkt_state));
/* Initialize the system. */ /* Initialize the system. */
...@@ -105,6 +124,5 @@ normal_launch: ...@@ -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, "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); RETURN_IF(load_module_by_name(&srv, "repo", &srv.repo), "Can't load module repo", 3);
lkt_listen(&srv); lkt_listen(&srv);
srv.win.free(&srv.win);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
...@@ -12,7 +12,7 @@ mdtcat(struct kara_metadata *mdt, char **ret) ...@@ -12,7 +12,7 @@ mdtcat(struct kara_metadata *mdt, char **ret)
size_t size = strlen(mdt->song_name) + strlen(mdt->source_name) + size_t size = strlen(mdt->song_name) + strlen(mdt->source_name) +
strlen(mdt->category) + strlen(mdt->language) + strlen(mdt->category) + strlen(mdt->language) +
strlen(mdt->author_name) + strlen(mdt->song_type) + strlen(mdt->author_name) + strlen(mdt->song_type) +
/* Null byte */ 1 + /* Separators */ 12 + /* Null byte */ 1 + /* Separators */ 12 + 5 +
long_length(mdt->song_number); long_length(mdt->song_number);
*ret = malloc(sizeof(char) * size); *ret = malloc(sizeof(char) * size);
if (!*ret) { if (!*ret) {
...@@ -20,7 +20,7 @@ mdtcat(struct kara_metadata *mdt, char **ret) ...@@ -20,7 +20,7 @@ mdtcat(struct kara_metadata *mdt, char **ret)
return; 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->language, mdt->source_name, mdt->song_type,
mdt->song_number, mdt->song_name); mdt->song_number, mdt->song_name, mdt->author_name);
} }
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter