+2009-07-18 Eric Blake <ebb9@byu.net>
+
+ error: avoid undefined use of stdout
+ * lib/error.c (error, error_at_line): Check that fd 1 is open
+ before flushing stdout. Avoids a crash on cygwin when libsigsegv
+ is handling faults and the close_stdout module wants to report the
+ detection of closed stdout as an error.
+
2009-07-17 Eric Blake <ebb9@byu.net>
pipe: be robust in face of closed fds
/* Error handler for noninteractive utilities
- Copyright (C) 1990-1998, 2000-2007 Free Software Foundation, Inc.
+ Copyright (C) 1990-1998, 2000-2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software: you can redistribute it and/or modify
#else /* not _LIBC */
+# include <fcntl.h>
+
# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
# ifndef HAVE_DECL_STRERROR_R
"this configure-time declaration test was not run"
0);
#endif
+#if !_LIBC
+ /* POSIX states that fflush (stdout) after fclose is unspecified; it
+ is safe in glibc, but not on all other platforms. fflush (NULL)
+ is always defined, but too draconian. */
+ if (0 <= fcntl (1, F_GETFL))
+#endif
fflush (stdout);
#ifdef _LIBC
_IO_flockfile (stderr);
0);
#endif
+#if !_LIBC
+ /* POSIX states that fflush (stdout) after fclose is unspecified; it
+ is safe in glibc, but not on all other platforms. fflush (NULL)
+ is always defined, but too draconian. */
+ if (0 <= fcntl (1, F_GETFL))
+#endif
fflush (stdout);
#ifdef _LIBC
_IO_flockfile (stderr);