From 6ef982714cf2a0a796cd55805ceeeaa07726a903 Mon Sep 17 00:00:00 2001 From: Francois-Xavier Coudert Date: Tue, 8 Nov 2011 21:58:47 +0000 Subject: [PATCH] re PR libfortran/47972 (error.c:158:7: warning: return makes pointer from integer without a cast) PR libfortran/47972 * runtime/error.c (gf_strerror): Silence warning. From-SVN: r181180 --- libgfortran/ChangeLog | 5 +++++ libgfortran/runtime/error.c | 20 +++++++------------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index becb6012838..3a2db6dd50c 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2011-11-08 Francois-Xavier Coudert + + PR libfortran/47972 + * runtime/error.c (gf_strerror): Silence warning. + 2011-11-08 Francois-Xavier Coudert PR libfortran/47970 diff --git a/libgfortran/runtime/error.c b/libgfortran/runtime/error.c index aa447061a54..cb064297c96 100644 --- a/libgfortran/runtime/error.c +++ b/libgfortran/runtime/error.c @@ -219,19 +219,13 @@ gf_strerror (int errnum, size_t buflen __attribute__((unused))) { #ifdef HAVE_STRERROR_R - /* TODO: How to prevent the compiler warning due to strerror_r of - the untaken branch having the wrong return type? */ - if (__builtin_classify_type (strerror_r (0, buf, 0)) == 5) - { - /* GNU strerror_r() */ - return strerror_r (errnum, buf, buflen); - } - else - { - /* POSIX strerror_r () */ - strerror_r (errnum, buf, buflen); - return buf; - } + return + __builtin_choose_expr (__builtin_classify_type (strerror_r (0, buf, 0)) + == 5, + /* GNU strerror_r() */ + strerror_r (errnum, buf, buflen), + /* POSIX strerror_r () */ + (strerror_r (errnum, buf, buflen), buf)); #else /* strerror () is not necessarily thread-safe, but should at least be available everywhere. */