summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2013-07-03 20:33:19 -0400
committerAllan McRae <allan@archlinux.org>2013-07-05 14:32:23 +1000
commiteb19d41d5f85f169cee7570f783821cb705ad37a (patch)
tree245a12aa27e01a6f8ee74f5c1624d4e341551b81 /src
parent7b8f8753b15037bf4a88126ffde8195416432c72 (diff)
downloadpacman-eb19d41d5f85f169cee7570f783821cb705ad37a.tar.xz
do not check error from close(2)
On operating systems we support, the behavior is always such that the kernel will do the right thing as far as invalidating the file descriptor, regardless of the eventual return value. Therefore, potentially looping and calling close multiple times is wrong. At best, we call close again on an invalid FD and throw a spurious EBADF error. At worst, we might close an FD which doesn't belong to us when a multi-threaded application opens its own file descriptor between iterations of the loop. Signed-off-by: Dave Reisner <dreisner@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'src')
-rw-r--r--src/pacman/conf.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/src/pacman/conf.c b/src/pacman/conf.c
index 5adc96cf..2985aba1 100644
--- a/src/pacman/conf.c
+++ b/src/pacman/conf.c
@@ -257,14 +257,11 @@ static int download_with_xfercommand(const char *url, const char *localpath,
cleanup:
/* restore the old cwd if we have it */
if(cwdfd >= 0) {
- int close_ret;
if(fchdir(cwdfd) != 0) {
pm_printf(ALPM_LOG_ERROR, _("could not restore working directory (%s)\n"),
strerror(errno));
}
- do {
- close_ret = close(cwdfd);
- } while(close_ret == -1 && errno == EINTR);
+ close(cwdfd);
}
if(ret == -1) {