Mercurial > hg > octave-nkf > gnulib-hg
changeset 7125:43f38211e7e3
* pipe-safer.c (pipe_safer): Fix misspelling: HAVE_FUNC_PIPE ->
HAVE_PIPE. Fix a file descriptor leak when fd_safer fails.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Fri, 11 Aug 2006 20:25:07 +0000 |
parents | a61f08bc4d0f |
children | 055fac8c977b |
files | lib/ChangeLog lib/pipe-safer.c |
diffstat | 2 files changed, 23 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,5 +1,8 @@ 2006-08-11 Paul Eggert <eggert@cs.ucla.edu> + * pipe-safer.c (pipe_safer): Fix misspelling: HAVE_FUNC_PIPE -> + HAVE_PIPE. Fix a file descriptor leak when fd_safer fails. + * regex_internal.c (re_string_skip_chars): Don't assume WEOF fits in wchar_t. Problem reported by Eric Blake.
--- a/lib/pipe-safer.c +++ b/lib/pipe-safer.c @@ -33,25 +33,27 @@ int pipe_safer (int fd[2]) { -#if HAVE_FUNC_PIPE - int fail = pipe (fd); - if (fail) - return fail; +#if HAVE_PIPE + if (pipe (fd) == 0) + { + int i; + for (i = 0; i < 2; i++) + { + fd[i] = fd_safer (fd[i]); + if (fd[i] < 0) + { + int e = errno; + close (fd[1 - i]); + errno = e; + return -1; + } + } - { - int i; - for (i = 0; i < 2; i++) - { - int f = fd_safer (fd[i]); - if (f < 0) - return -1; - fd[i] = f; - } - } + return 0; + } +#else + errno = ENOSYS; +#endif - return 0; -#else /* ! HAVE_FUNC_PIPE */ - errno = ENOSYS; return -1; -#endif }