summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2015-06-10 11:08:05 +0200
committerCarlos Martín Nieto <cmn@dwim.me>2015-06-10 11:08:05 +0200
commit0137aba56863634d81e407152df723d5ad4a97ce (patch)
tree4e6e1afce58a9389db10f7f7d6955db670b5b72d
parent969d4b703c910a8fd045baafbcd243b4c9825316 (diff)
downloadlibgit2-cmn/coverity.tar.gz
filter: close the descriptor in case of errorcmn/coverity
When we hit an error writing to the next stream from a file, we jump to 'done' which currently skips over closing the file descriptor. Make sure to close the descriptor if it has been set to a valid value.
-rw-r--r--src/filter.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/filter.c b/src/filter.c
index c88fdd4ee..3c6a0a9d8 100644
--- a/src/filter.c
+++ b/src/filter.c
@@ -887,7 +887,7 @@ int git_filter_list_stream_file(
git_vector filter_streams = GIT_VECTOR_INIT;
git_writestream *stream_start;
ssize_t readlen;
- int fd, error;
+ int fd = -1, error;
if ((error = stream_list_init(
&stream_start, &filter_streams, filters, target)) < 0 ||
@@ -909,9 +909,10 @@ int git_filter_list_stream_file(
else if (readlen < 0)
error = readlen;
- p_close(fd);
done:
+ if (fd >= 0)
+ p_close(fd);
stream_list_free(&filter_streams);
git_buf_free(&abspath);
return error;