From: Stefan Fritsch Date: Sat, 8 Oct 2011 07:54:31 +0000 (+0000) Subject: Shut up gcc/glibc warning about ignoring write()'s return value. X-Git-Tag: 2.3.15~158 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=caf0908cf536eff9aef420c570d7a6e737b97d09;p=thirdparty%2Fapache%2Fhttpd.git Shut up gcc/glibc warning about ignoring write()'s return value. This may actually fix a real bug in case the error log is directed to a FIFO. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1180334 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/util.c b/server/util.c index e58ad76aeb4..2444a0d667b 100644 --- a/server/util.c +++ b/server/util.c @@ -2651,12 +2651,22 @@ AP_DECLARE(void) ap_varbuf_regsub(struct ap_varbuf *vb, const char *input, regsub_core(NULL, vb, input, source, nmatch, pmatch); } -#define OOM_MESSAGE "[crit] Memory allocation failed, " \ - "aborting process." APR_EOL_STR +static const char * const oom_message = "[crit] Memory allocation failed, " + "aborting process." APR_EOL_STR; AP_DECLARE(void) ap_abort_on_oom() { - write(STDERR_FILENO, OOM_MESSAGE, strlen(OOM_MESSAGE)); + int written, count = strlen(oom_message); + const char *buf = oom_message; + do { + written = write(STDERR_FILENO, buf, count); + if (written == count) + break; + if (written > 0) { + buf += written; + count -= written; + } + } while (written >= 0 || errno == EINTR); abort(); }