From: Johan Malm Date: Thu, 13 Aug 2020 19:18:48 +0000 (+0100) Subject: rcxml: add rcxml_finish() X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=68fb8a3af589c9970f6d46b4b270b6eb8d287414;p=proto%2Flabwc.git rcxml: add rcxml_finish() --- diff --git a/asan_suppressions.txt b/asan_suppressions.txt new file mode 100644 index 00000000..8ed61702 --- /dev/null +++ b/asan_suppressions.txt @@ -0,0 +1,3 @@ +leak:libfontconfig +leak:libglib-2.0 + diff --git a/include/config/rcxml.h b/include/config/rcxml.h index 45a7caf3..e540db48 100644 --- a/include/config/rcxml.h +++ b/include/config/rcxml.h @@ -20,6 +20,7 @@ extern struct rcxml rc; void rcxml_parse_xml(struct buf *b); void rcxml_read(const char *filename); +void rcxml_finish(void); void rcxml_get_nodenames(struct buf *b); #endif /* __LABWC_RCXML_H */ diff --git a/src/config/rcxml.c b/src/config/rcxml.c index d92d6131..4341375d 100644 --- a/src/config/rcxml.c +++ b/src/config/rcxml.c @@ -295,6 +295,28 @@ out: post_processing(); } +static void free_safe(const void *p) +{ + if (p) + free((void *)p); + p = NULL; +} + +void rcxml_finish(void) +{ + free_safe(rc.font_name_activewindow); + free_safe(rc.theme_name); + + struct keybind *k, *k_tmp; + wl_list_for_each_safe (k, k_tmp, &rc.keybinds, link) { + wl_list_remove(&k->link); + free_safe(k->command); + free_safe(k->action); + free_safe(k->keysyms); + free_safe(k); + } +} + void rcxml_get_nodenames(struct buf *b) { write_to_nodename_buffer = true; diff --git a/src/main.c b/src/main.c index 1b0cefe5..cca16d7b 100644 --- a/src/main.c +++ b/src/main.c @@ -59,5 +59,6 @@ int main(int argc, char *argv[]) wl_display_run(server.wl_display); server_finish(&server); + rcxml_finish(); return 0; } diff --git a/tests/t1000-rcxml-simple-parse.c b/tests/t1000-rcxml-simple-parse.c index 5fcdda63..e4eef60a 100644 --- a/tests/t1000-rcxml-simple-parse.c +++ b/tests/t1000-rcxml-simple-parse.c @@ -33,5 +33,6 @@ int main(int argc, char **argv) diag("Simple parse rc.xml"); ok1(rc.client_side_decorations); + rcxml_finish(); return exit_status(); }