From: Jonathan Wakely Date: Wed, 31 Jul 2024 12:56:14 +0000 (+0100) Subject: libstdc++: Handle strerror returning null X-Git-Tag: basepoints/gcc-16~7102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ee4cc961ce399f2f3ac92fd711551677d61771da;p=thirdparty%2Fgcc.git libstdc++: Handle strerror returning null The linux man page for strerror says that some systems return NULL for an unknown error number. That violates the C and POSIX standards, but we can esily handle it to avoid a segfault. libstdc++-v3/ChangeLog: * src/c++11/system_error.cc (strerror_string): Handle non-conforming NULL return from strerror. --- diff --git a/libstdc++-v3/src/c++11/system_error.cc b/libstdc++-v3/src/c++11/system_error.cc index d01451ba1ef..38bc0446110 100644 --- a/libstdc++-v3/src/c++11/system_error.cc +++ b/libstdc++-v3/src/c++11/system_error.cc @@ -110,7 +110,11 @@ namespace #else string strerror_string(int err) { - return strerror(err); // XXX Not thread-safe. + auto str = strerror(err); // XXX Not thread-safe. + if (str) [[__likely__]] + return str; + // strerror should not return NULL, but some implementations do. + return "Unknown error"; } #endif