Don't demangle the exception class name on MSVC
parent
f21025b526
commit
0c670e7699
|
@ -131,7 +131,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
|||
set(RELEASE_CXX_FLAGS "-O2")
|
||||
set(DEBUG_CXX_FLAGS "-g -O0")
|
||||
set(TEST_CXX_FLAGS "-pthread")
|
||||
add_definitions(-DNOEXCEPT=noexcept)
|
||||
add_definitions(-DNOEXCEPT=noexcept -DHAVE_DEMANGLE)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.1)
|
||||
message(FATAL_ERROR "${PROJECT_NAME} requires Clang 3.1 or greater.")
|
||||
|
@ -143,7 +143,7 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|||
set(RELEASE_CXX_FLAGS "-O2")
|
||||
set(DEBUG_CXX_FLAGS "-g -O0")
|
||||
set(TEST_CXX_FLAGS "-pthread")
|
||||
add_definitions(-DNOEXCEPT=noexcept)
|
||||
add_definitions(-DNOEXCEPT=noexcept -DHAVE_DEMANGLE)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
message(STATUS "Detected MSVC compiler")
|
||||
|
||||
|
|
|
@ -56,7 +56,8 @@ void CSignalHandlers::SignalHandler(int sig)
|
|||
ReportError(signalStr);
|
||||
}
|
||||
|
||||
// TODO: How portable across compilers is this?
|
||||
#if HAVE_DEMANGLE
|
||||
// For gcc and clang
|
||||
#include <cstdlib>
|
||||
#include <memory>
|
||||
#include <cxxabi.h>
|
||||
|
@ -67,9 +68,15 @@ std::string demangle(const char* name) {
|
|||
std::free
|
||||
};
|
||||
|
||||
return result != nullptr ? result.get() : name;
|
||||
return (result != nullptr && status == 0) ? result.get() : name;
|
||||
}
|
||||
// END OF TODO
|
||||
#else
|
||||
// For MSVC and others
|
||||
// In MSVC typeinfo(e).name() should be already demangled
|
||||
std::string demangle(const char* name) {
|
||||
return name;
|
||||
}
|
||||
#endif
|
||||
|
||||
void CSignalHandlers::UnhandledExceptionHandler()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue