Fix crash when demangled symbol is n/a

std::string foo (NULL) can throw a std::__throw_logic_error
which was not caught.
This commit is contained in:
Robin Gareus 2021-07-19 17:32:18 +02:00
parent 572a69758a
commit c5e5659022
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -27,16 +27,15 @@ std::string
PBD::demangle_symbol (const std::string& mangled_symbol) PBD::demangle_symbol (const std::string& mangled_symbol)
{ {
#if defined(__GLIBCXX__) #if defined(__GLIBCXX__)
int status;
try { try {
int status;
char* realname = abi::__cxa_demangle (mangled_symbol.c_str(), 0, 0, &status); char* realname = abi::__cxa_demangle (mangled_symbol.c_str(), 0, 0, &status);
std::string demangled_symbol (realname); std::string demangled_symbol (realname);
free (realname); free (realname);
return demangled_symbol; return demangled_symbol;
} catch (const std::exception&) { } catch (...) {
/* may happen if realname == NULL */
} }
#endif #endif