Function grib_context_log(): errno value can potentially be overwritten
@@ -1012,6 +1012,7 @@ void grib_context_log(const grib_context* c, int level, const char* fmt, ...)
else {
char msg[1024];
va_list list;
+ const int errsv = errno;
va_start(list, fmt);
vsprintf(msg, fmt, list);
@@ -1023,12 +1024,12 @@ void grib_context_log(const grib_context* c, int level, const char* fmt, ...)
/* #if HAS_STRERROR */
#if 1
strcat(msg, " (");
- strcat(msg, strerror(errno));
+ strcat(msg, strerror(errsv));
strcat(msg, ")");
#else
- if (errno > 0 && errno < sys_nerr) {
+ if (errsv > 0 && errsv < sys_nerr) {
strcat(msg, " (");
- strcat(msg, sys_errlist[errno]);
+ strcat(msg, sys_errlist[errsv]);
strcat(msg, " )");
}
#endif
