summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Gruenbacher <agruen@gnu.org>2019-06-27 11:02:02 +0200
committerAndreas Gruenbacher <agruen@gnu.org>2019-06-27 11:07:01 +0200
commit2b584aec9e5f2806b1eccadcabe7e901fcfa0b0a (patch)
tree95dc64a01fc87c6af87ec332ec919f1151192d55
parent9c986353e420ead6e706262bf204d6e03322c300 (diff)
downloadpatch-2b584aec9e5f2806b1eccadcabe7e901fcfa0b0a.tar.gz
Improve support for memory leak detection
When building with the address sanitizer on, free some more resources before exiting. (This is unnecessary when not looking for memory leaks.) * src/patch.c (init_files_to_delete): Add dispose function for freeing filenames.
-rw-r--r--src/patch.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/patch.c b/src/patch.c
index 81c7a02..4616a48 100644
--- a/src/patch.c
+++ b/src/patch.c
@@ -36,6 +36,10 @@
#include <minmax.h>
#include <safe.h>
+#ifdef __SANITIZE_ADDRESS__
+# define FREE_BEFORE_EXIT
+#endif
+
/* procedures */
static FILE *create_output_file (char const *, int);
@@ -1777,10 +1781,20 @@ struct file_to_delete {
static gl_list_t files_to_delete;
+#ifdef FREE_BEFORE_EXIT
+void dispose_file_to_delete (const void *elt)
+{
+ free ((void *) elt);
+}
+#else
+#define dispose_file_to_delete NULL
+#endif
+
static void
init_files_to_delete (void)
{
- files_to_delete = gl_list_create_empty (GL_LINKED_LIST, NULL, NULL, NULL, true);
+ files_to_delete = gl_list_create_empty (GL_LINKED_LIST, NULL, NULL,
+ dispose_file_to_delete, true);
}
static void