From 9367b35ed3b689fda78dd071b22ef09ce546d9c4 Mon Sep 17 00:00:00 2001 From: wrowe Date: Wed, 19 Mar 2003 02:08:28 +0000 Subject: Bug Fix #1 .. Move the special-case of Netware into _dup_file() where it belongs (this will be evident in bug #2). The patch fixes a fd leak on Netware where each call to apr_file_dup2 failed to close the original fd. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64423 13f79535-47bb-0310-9956-ffa450edef68 --- file_io/unix/filedup.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/file_io/unix/filedup.c b/file_io/unix/filedup.c index 7083286fe..e5cc94621 100644 --- a/file_io/unix/filedup.c +++ b/file_io/unix/filedup.c @@ -78,7 +78,15 @@ static apr_status_t _file_dup(apr_file_t **new_file, } if (which_dup == 2) { +#ifdef NETWARE + /* Apparently Netware doesn't support dup2... instead + * close() then dup() + */ + close((*new_file)->filedes); + rv = ((*new_file)->filedes = dup(old_file->filedes)); +#else rv = dup2(old_file->filedes, (*new_file)->filedes); +#endif } else { rv = ((*new_file)->filedes = dup(old_file->filedes)); } @@ -141,11 +149,7 @@ APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, apr_file_t *old_file, apr_pool_t *p) { -#ifdef NETWARE - return _file_dup(&new_file, old_file, p, 1); -#else return _file_dup(&new_file, old_file, p, 2); -#endif } APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, -- cgit v1.2.1