diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index a2ae060921d7..6c0e98b81c1a 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2015-09-02 Janne Blomqvist + + PR libfortran/67414 + * runtime/error.c (gf_strerror): Handle newlocale() failure. + 2015-08-28 James Greenhalgh * configure.ac: Define HAVE_FTRUNCATE for ARM/AArch64/SH newlib diff --git a/libgfortran/runtime/error.c b/libgfortran/runtime/error.c index 098231916aa2..92bd11819e63 100644 --- a/libgfortran/runtime/error.c +++ b/libgfortran/runtime/error.c @@ -221,8 +221,16 @@ gf_strerror (int errnum, #ifdef HAVE_STRERROR_L locale_t myloc = newlocale (LC_CTYPE_MASK | LC_MESSAGES_MASK, "", (locale_t) 0); - char *p = strerror_l (errnum, myloc); - freelocale (myloc); + char *p; + if (myloc) + { + p = strerror_l (errnum, myloc); + freelocale (myloc); + } + else + /* newlocale might fail e.g. due to running out of memory, fall + back to the simpler strerror. */ + p = strerror (errnum); return p; #elif defined(HAVE_STRERROR_R) #ifdef HAVE_USELOCALE