Mercurial > hg
changeset 16367:c14898df3b92 stable
ui: swallow EBADF on stderr
ui.write_err already swallows EPIPE and EIO if a write to stderr fails.
On Mac OS X at least, a write to a closed file descriptor results in
EBADF. Before this patch, hg would exit with status 1 if a write to
stderr failed during startup (e.g. while trying to print a warning about
not finding an extension):
$ ./hg --config extensions.foo= version 2>&-; echo $?
1
With this patch, it correctly swallows stderr and continues to run the
command:
$ ./hg --config extensions.foo= version 2>&-
Mercurial Distributed SCM (version 2.1)
...
author | Kevin Bullock <kbullock@ringworld.org> |
---|---|
date | Wed, 04 Apr 2012 12:46:54 -0500 |
parents | f64b25f147d7 |
children | 8614f8e0dd7a |
files | mercurial/ui.py |
diffstat | 1 files changed, 1 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/ui.py Thu Apr 05 12:31:21 2012 +0100 +++ b/mercurial/ui.py Wed Apr 04 12:46:54 2012 -0500 @@ -480,7 +480,7 @@ if not getattr(self.ferr, 'closed', False): self.ferr.flush() except IOError, inst: - if inst.errno not in (errno.EPIPE, errno.EIO): + if inst.errno not in (errno.EPIPE, errno.EIO, errno.EBADF): raise def flush(self):