[PATCH 1/2] Fixed some memory leaks related to string configuration entries

Lubomir I. Ivanov neolit123 at gmail.com
Thu Oct 4 14:48:44 PDT 2012

From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

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 <neolit123 at gmail.com>
 gtk-gui.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gtk-gui.c b/gtk-gui.c
index c4517fd..0312fe6 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)
 	if (is_default_dive_computer(vendor, product))
+	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 */
+		if (divelist_font)
+			free((void *)divelist_font);
 		divelist_font = strdup(gtk_font_button_get_font_name(GTK_FONT_BUTTON(font)));

More information about the subsurface mailing list