]> granicus.if.org Git - apache/commitdiff
Shut up gcc/glibc warning about ignoring write()'s return value.
authorStefan Fritsch <sf@apache.org>
Sat, 8 Oct 2011 07:54:31 +0000 (07:54 +0000)
committerStefan Fritsch <sf@apache.org>
Sat, 8 Oct 2011 07:54:31 +0000 (07:54 +0000)
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

server/util.c

index e58ad76aeb4519ba8063326ed60426b99246d6ad..2444a0d667bd14486c4e27456a22eaf9f63671f4 100644 (file)
@@ -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();
 }