]> git.mdlowis.com Git - proto/labwc.git/commitdiff
rcxml: add rcxml_finish()
authorJohan Malm <jgm323@gmail.com>
Thu, 13 Aug 2020 19:18:48 +0000 (20:18 +0100)
committerJohan Malm <jgm323@gmail.com>
Thu, 13 Aug 2020 19:20:44 +0000 (20:20 +0100)
asan_suppressions.txt [new file with mode: 0644]
include/config/rcxml.h
src/config/rcxml.c
src/main.c
tests/t1000-rcxml-simple-parse.c

diff --git a/asan_suppressions.txt b/asan_suppressions.txt
new file mode 100644 (file)
index 0000000..8ed6170
--- /dev/null
@@ -0,0 +1,3 @@
+leak:libfontconfig
+leak:libglib-2.0
+
index 45a7caf3b236303990eaeafccba9d930160f6d13..e540db48cba687e8c10e5e9166ba008cc0e51546 100644 (file)
@@ -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 */
index d92d61311decfbe05ec249fd979c920f56d8a877..4341375db6e4523cb0a3aeadaec62e4b5af0d4cb 100644 (file)
@@ -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;
index 1b0cefe5fc4b2cc20e5835684889f0beab1fa8f5..cca16d7b4f72669b3f0af8225ab8d625348fae67 100644 (file)
@@ -59,5 +59,6 @@ int main(int argc, char *argv[])
 
        wl_display_run(server.wl_display);
        server_finish(&server);
+       rcxml_finish();
        return 0;
 }
index 5fcdda63afda7402e81bf854e12bb6bb74c892c7..e4eef60a1ded425df69b5ce665e56bfba575eab2 100644 (file)
@@ -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();
 }