From 55ba0940d96a0da92a3ab3234a5fb7ae0b445b5f Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 9 May 2008 14:13:06 +0000 Subject: [PATCH] PR 6493 * gold.cc (gold_nomem): Use return value of write. --- gold/ChangeLog | 5 +++++ gold/gold.cc | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index 9a95d32..7ded231 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2008-05-09 Ian Lance Taylor + + PR 6493 + * gold.cc (gold_nomem): Use return value of write. + 2008-05-08 Ian Lance Taylor * symtab.c (Symbol::init_base_output_data): Add version diff --git a/gold/gold.cc b/gold/gold.cc index 396a5a9..267c4d1 100644 --- a/gold/gold.cc +++ b/gold/gold.cc @@ -60,9 +60,18 @@ gold_nomem() // We are out of memory, so try hard to print a reasonable message. // Note that we don't try to translate this message, since the // translation process itself will require memory. - write(2, program_name, strlen(program_name)); - const char* const s = ": out of memory\n"; - write(2, s, strlen(s)); + + // LEN only exists to avoid a pointless warning when write is + // declared with warn_use_result, as when compiling with + // -D_USE_FORTIFY on GNU/Linux. Casting to void does not appear to + // work, at least not with gcc 4.3.0. + + ssize_t len = write(2, program_name, strlen(program_name)); + if (len >= 0) + { + const char* const s = ": out of memory\n"; + len = write(2, s, strlen(s)); + } gold_exit(false); } -- 2.7.4