summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2017-02-06 23:16:39 -0500
committerTavian Barnes <tavianator@tavianator.com>2017-02-06 23:16:58 -0500
commit3fd6439f571a56771c6bbc21fa638cb94c929cc3 (patch)
tree1c5d5cdf501286e7a36c15c22df701c7f9246b46
parenteff9cbe83a6a4dad7338cf78ad3747d0d6628304 (diff)
downloadbfs-3fd6439f571a56771c6bbc21fa638cb94c929cc3.tar.xz
Fix a memory leak parsing -printf
-rw-r--r--printf.c1
-rwxr-xr-xtests.sh8
-rw-r--r--tests/test_0141.out1
3 files changed, 9 insertions, 1 deletions
diff --git a/printf.c b/printf.c
index 7ee0dc1..08522db 100644
--- a/printf.c
+++ b/printf.c
@@ -731,6 +731,7 @@ done:
goto error;
}
+ dstrfree(literal);
return command;
error:
diff --git a/tests.sh b/tests.sh
index f24308d..a6d9784 100755
--- a/tests.sh
+++ b/tests.sh
@@ -852,9 +852,15 @@ function test_0140() {
bfs_diff basic basic -quit -print
}
+function test_0141() {
+ # Memory leak regression test
+ [ "$GNU" ] || return 0
+ bfs_diff basic -maxdepth 0 -printf '%p'
+}
+
result=0
-for i in {1..140}; do
+for i in {1..141}; do
test="test_$(printf '%04d' $i)"
if [ -t 1 ]; then
diff --git a/tests/test_0141.out b/tests/test_0141.out
new file mode 100644
index 0000000..15a13db
--- /dev/null
+++ b/tests/test_0141.out
@@ -0,0 +1 @@
+basic