From b272fb8c3b7c552e4519d4e19af99d8139eaf733 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Thu, 4 Oct 2012 23:52:09 +0300 Subject: [PATCH] Fixed some memory leaks related to string configuration entries Each time we retrieve a string configuration entry via subsurface_get_conf(), all the multiplatform methods in linux.c, macos.c, windows.c allocate memory for the returned value. In gtk-gui.c, lets try to release the memory at: default_dive_computer_vendor, default_dive_computer_product, divelist_font before assigning a new address to these pointers. Signed-off-by: Lubomir I. Ivanov Signed-off-by: Dirk Hohndel --- gtk-gui.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gtk-gui.c b/gtk-gui.c index c4517fdd3..0312fe695 100644 --- a/gtk-gui.c +++ b/gtk-gui.c @@ -60,6 +60,10 @@ static void set_default_dive_computer(const char *vendor, const char *product) return; if (is_default_dive_computer(vendor, product)) return; + if (default_dive_computer_vendor) + free((void *)default_dive_computer_vendor); + if (default_dive_computer_product) + free((void *)default_dive_computer_product); default_dive_computer_vendor = vendor; default_dive_computer_product = product; subsurface_set_conf("dive_computer_vendor", PREF_STRING, vendor); @@ -673,6 +677,8 @@ static void preferences_dialog(GtkWidget *w, gpointer data) /* Make sure to flush any modified old dive data with old units */ update_dive(NULL); + if (divelist_font) + free((void *)divelist_font); divelist_font = strdup(gtk_font_button_get_font_name(GTK_FONT_BUTTON(font))); set_divelist_font(divelist_font);