aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2011-04-05 15:13:29 +0300
committerLasse Collin <lasse.collin@tukaani.org>2011-04-05 15:13:29 +0300
commit1ef3cf44a8eb9512480af4482a5232ea08363b14 (patch)
tree248727b8e434c8b0a3aa94f2756179e31fe0812f
parentliblzma: Fix a memory leak in stream_encoder.c. (diff)
downloadxz-1ef3cf44a8eb9512480af4482a5232ea08363b14.tar.xz
xz: Call lzma_end(&strm) before exiting if debugging is enabled.
-rw-r--r--src/xz/coder.c10
-rw-r--r--src/xz/coder.h5
-rw-r--r--src/xz/main.c4
3 files changed, 19 insertions, 0 deletions
diff --git a/src/xz/coder.c b/src/xz/coder.c
index 5e5ed04c..c893f787 100644
--- a/src/xz/coder.c
+++ b/src/xz/coder.c
@@ -698,3 +698,13 @@ coder_run(const char *filename)
return;
}
+
+
+#ifndef NDEBUG
+extern void
+coder_free(void)
+{
+ lzma_end(&strm);
+ return;
+}
+#endif
diff --git a/src/xz/coder.h b/src/xz/coder.h
index 7edca039..35000438 100644
--- a/src/xz/coder.h
+++ b/src/xz/coder.h
@@ -65,3 +65,8 @@ extern void coder_set_compression_settings(void);
/// Compress or decompress the given file
extern void coder_run(const char *filename);
+
+#ifndef NDEBUG
+/// Free the memory allocated for the coder and kill the worker threads.
+extern void coder_free(void);
+#endif
diff --git a/src/xz/main.c b/src/xz/main.c
index 8196c6e7..4e5b49e5 100644
--- a/src/xz/main.c
+++ b/src/xz/main.c
@@ -275,6 +275,10 @@ main(int argc, char **argv)
list_totals();
}
+#ifndef NDEBUG
+ coder_free();
+#endif
+
// If we have got a signal, raise it to kill the program instead
// of calling tuklib_exit().
signals_exit();