From 0a872de7cdea50a4194b69fba86f16c2f0d14af3 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Fri, 31 Dec 2004 10:06:43 +0000 Subject: [PATCH] (rpl_openat): Correct comment. Call free_cwd, to avoid leaking a file descriptor. --- lib/openat.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/openat.c b/lib/openat.c index 26e280d786..fa617b807f 100644 --- a/lib/openat.c +++ b/lib/openat.c @@ -37,7 +37,11 @@ /* Replacement for Solaris' openat function. Simulate it by doing save_cwd/fchdir/open/restore_cwd. - If either the fchdir or the restore_cwd fails, then exit nonzero. */ + If either the save_cwd or the restore_cwd fails (relatively unlikely, + and usually indicative of a problem that deserves close attention), + then give a diagnostic and exit nonzero. + Otherwise, upon failure, set errno and return -1, as openat does. + Upon successful completion, return a file descriptor. */ int rpl_openat (int fd, char const *filename, int flags, ...) { @@ -80,6 +84,8 @@ rpl_openat (int fd, char const *filename, int flags, ...) error (exit_failure, errno, _("openat: unable to restore working directory")); + free_cwd (&saved_cwd); + errno = saved_errno; return new_fd; } -- 2.47.3