From 866844826c3274d1ca8487aaa23dbc3b55c4fa59 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sun, 16 Oct 2011 12:14:05 +0200 Subject: [PATCH] tac: don't leak a file descriptor for each non-seekable input * src/tac.c (tac_nonseekable): Call fclose and free tmp_file after each successful call to copy_to_temp. --- src/tac.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/tac.c b/src/tac.c index 2898199a2..97b19aec7 100644 --- a/src/tac.c +++ b/src/tac.c @@ -511,16 +511,13 @@ tac_nonseekable (int input_fd, const char *file) { FILE *tmp_stream; char *tmp_file; - if (copy_to_temp (&tmp_stream, &tmp_file, input_fd, file)) - { - if (tac_seekable (fileno (tmp_stream), tmp_file)) - { - free (tmp_file); - return true; - } - } + if (!copy_to_temp (&tmp_stream, &tmp_file, input_fd, file)) + return false; - return false; + bool ok = tac_seekable (fileno (tmp_stream), tmp_file); + fclose (tmp_stream); + free (tmp_file); + return ok; } /* Print FILE in reverse, copying it to a temporary -- 2.11.4.GIT