From 72c491eb405a47d7380a8cb12a78db92927ff9d2 Mon Sep 17 00:00:00 2001 From: Szymon Janc Date: Fri, 30 Nov 2012 13:57:42 +0100 Subject: [PATCH] core: Free parsed options There is no need to keep already parsed options in memory. This also fix not freeing options at all. 2 bytes in 1 blocks are still reachable in loss record 1 of 153 at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) by 0x4E7FA78: g_malloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E942DD: g_strdup (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x167333: parse_debug (main.c:425) by 0x4E839D8: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E8403F: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E85233: g_option_context_parse (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x121084: main (main.c:462) 16 bytes in 2 blocks are still reachable in loss record 39 of 153 at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) by 0x4E7FA78: g_malloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E5D68B: g_convert_with_iconv (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E5D94B: g_convert (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E5DFBA: g_locale_to_utf8 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E837C7: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E8403F: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x4E85233: g_option_context_parse (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3) by 0x121084: main (main.c:462) --- src/main.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main.c b/src/main.c index ccb5fa544..bc53a8ef1 100644 --- a/src/main.c +++ b/src/main.c @@ -344,6 +344,18 @@ static gboolean option_detach = TRUE; static gboolean option_version = FALSE; static gboolean option_udev = FALSE; +static void free_options(void) +{ + g_free(option_debug); + option_debug = NULL; + + g_free(option_plugin); + option_plugin = NULL; + + g_free(option_noplugin); + option_noplugin = NULL; +} + static guint last_adapter_timeout = 0; static gboolean exit_timeout(gpointer data) @@ -533,6 +545,9 @@ int main(int argc, char *argv[]) * daemon needs to be re-worked. */ plugin_init(config, option_plugin, option_noplugin); + /* no need to keep parsed option in memory */ + free_options(); + mgmt_err = mgmt_setup(); if (mgmt_err < 0) { error("mgmt setup failed: %s", strerror(-mgmt_err)); -- 2.47.3