diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-09-23 04:45:09 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-09-23 04:45:09 +0000 |
commit | 54915e9e373fdd0c15deca970ae4a04a17c598ad (patch) | |
tree | d3ed1907f5894cc0695161126154026f673cf502 | |
parent | be27d08c05911a658949ba7b84f4321a65a2dbf4 (diff) | |
download | glibc-54915e9e373fdd0c15deca970ae4a04a17c598ad.tar.gz glibc-54915e9e373fdd0c15deca970ae4a04a17c598ad.tar.xz glibc-54915e9e373fdd0c15deca970ae4a04a17c598ad.zip |
Update.
* malloc/malloc.c (malloc_printerr): Use syslog if writev failed.
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | malloc/malloc.c | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 027a8c5975..a23d0a1c5f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2004-09-22 Ulrich Drepper <drepper@redhat.com> + * malloc/malloc.c (malloc_printerr): Use syslog if writev failed. + * string/string.h: Add __nonnull annotations. * stdlib/stdlib.h: Likewise. diff --git a/malloc/malloc.c b/malloc/malloc.c index 665d7a4b3e..dcc54c46f1 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -285,6 +285,8 @@ extern "C" { /* For writev and struct iovec. */ #include <sys/uio.h> + /* For syslog. */ +#include <sys/syslog.h> /* Debugging: @@ -5467,7 +5469,12 @@ malloc_printerr(int action, const char *str, void *ptr) iov[n].iov_base = cp; iov[n].iov_len = &buf[sizeof (buf) - 1] - cp; ++n; - TEMP_FAILURE_RETRY (__writev (STDERR_FILENO, iov, n)); + if (TEMP_FAILURE_RETRY (__writev (STDERR_FILENO, iov, n)) == -1 + && errno == EBADF) + /* Standard error is not opened. Try using syslog. */ + syslog (LOG_ERR, "%s%s%s", (char *) iov[0].iov_base, + (char *) iov[1].iov_base, + n == 3 ? (const char *) iov[2].iov_base : ""); } if (action & 2) abort (); |