From be8b81f61633d373f99bbecbab494977e040f0c3 Mon Sep 17 00:00:00 2001 From: jilles Date: Mon, 30 May 2011 21:41:06 +0000 Subject: posix_spawn(): Do not fail when trying to close an fd that is not open. As noted in Austin Group issue #370 (an interpretation has been issued), failing posix_spawn() because an fd specified with posix_spawn_file_actions_addclose() is not open is unnecessarily harsh, and there are existing implementations that do not fail posix_spawn() for this reason. Reviewed by: ed MFC after: 10 days --- lib/libc/gen/posix_spawn.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/libc/gen/posix_spawn.c b/lib/libc/gen/posix_spawn.c index 20f2c16..58044b3 100644 --- a/lib/libc/gen/posix_spawn.c +++ b/lib/libc/gen/posix_spawn.c @@ -163,11 +163,8 @@ process_file_actions_entry(posix_spawn_file_actions_entry_t *fae) return (errno); break; case FAE_CLOSE: - /* Perform a close() */ - if (_close(fae->fae_fildes) != 0) { - if (errno == EBADF) - return (EBADF); - } + /* Perform a close(), do not fail if already closed */ + (void)_close(fae->fae_fildes); break; } return (0); -- cgit v1.1