summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Anton Lundin <glance@acc.umu.se>2014-12-18 08:47:42 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-12-18 07:20:10 -0800
commitda154222cc659769770a625c17bf4162eb929f42 (patch)
treeff0072226b3d7e8b3772a25fa0bef657ffd245ca
parentbe1b79081d078b55aad0e85016d3ef2cd4cbdeaf (diff)
downloadsubsurface-da154222cc659769770a625c17bf4162eb929f42.tar.gz
Free strduped prefs before exit
This plugs a leak detected by valgrind. Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--main.cpp1
-rw-r--r--subsurfacestartup.c17
-rw-r--r--subsurfacestartup.h1
3 files changed, 19 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
index fe44cca09..3989cc927 100644
--- a/main.cpp
+++ b/main.cpp
@@ -68,5 +68,6 @@ int main(int argc, char **argv)
exit_ui();
parse_xml_exit();
subsurface_console_exit();
+ free_prefs();
return 0;
}
diff --git a/subsurfacestartup.c b/subsurfacestartup.c
index 8847ab36a..618e942f3 100644
--- a/subsurfacestartup.c
+++ b/subsurfacestartup.c
@@ -219,3 +219,20 @@ void setup_system_prefs(void)
default_prefs.units = IMPERIAL_units;
}
+
+/*
+ * Free strduped prefs before exit.
+ *
+ * These are not real leaks but they plug the holes found by eg.
+ * valgrind so you can find the real leaks.
+ */
+void free_prefs(void)
+{
+ free((void*)prefs.default_filename);
+ free((void*)prefs.default_cylinder);
+ free((void*)prefs.divelist_font);
+ free(prefs.proxy_host);
+ free(prefs.proxy_user);
+ free(prefs.proxy_pass);
+ free(prefs.userid);
+}
diff --git a/subsurfacestartup.h b/subsurfacestartup.h
index 8eaaaa091..44db42efe 100644
--- a/subsurfacestartup.h
+++ b/subsurfacestartup.h
@@ -15,6 +15,7 @@ extern bool imported;
void setup_system_prefs(void);
void parse_argument(const char *arg);
+void free_prefs(void);
#ifdef __cplusplus
}