Fixed Windows/MSVC compilation.
This commit is contained in:
@@ -3,9 +3,19 @@
|
||||
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <backtrace.h>
|
||||
#include "../detect.hpp"
|
||||
|
||||
#if MIJIN_COMPILER == MIJIN_COMPILER_CLANG || MIJIN_COMPILER == MIJIN_COMPILER_GCC
|
||||
#define MIJIN_USE_LIBBACKTRACE 1
|
||||
#else
|
||||
#define MIJIN_USE_LIBBACKTRACE 0
|
||||
#endif
|
||||
|
||||
#if MIJIN_USE_LIBBACKTRACE
|
||||
#include <backtrace.h>
|
||||
#endif
|
||||
|
||||
|
||||
namespace mijin
|
||||
{
|
||||
namespace
|
||||
@@ -38,6 +48,7 @@ thread_local Optional<Stacktrace> gCurrentExceptionStackTrace;
|
||||
// internal functions
|
||||
//
|
||||
|
||||
#if MIJIN_USE_LIBBACKTRACE
|
||||
int backtraceFullCallback(void* data, std::uintptr_t programCounter, const char* filename, int lineno, const char* function)
|
||||
{
|
||||
BacktraceData& btData = *static_cast<BacktraceData*>(data);
|
||||
@@ -57,6 +68,7 @@ void backtraceErrorCallback(void* data, const char* msg, int /* errnum */)
|
||||
}
|
||||
|
||||
thread_local backtrace_state* gBacktraceState = nullptr;
|
||||
#endif // MIJIN_USE_LIBBACKTRACE
|
||||
} // namespace
|
||||
|
||||
//
|
||||
@@ -65,6 +77,7 @@ thread_local backtrace_state* gBacktraceState = nullptr;
|
||||
|
||||
Result<Stacktrace> captureStacktrace(unsigned skipFrames) noexcept
|
||||
{
|
||||
#if MIJIN_USE_LIBBACKTRACE
|
||||
BacktraceData btData;
|
||||
if (gBacktraceState == nullptr)
|
||||
{
|
||||
@@ -85,6 +98,10 @@ Result<Stacktrace> captureStacktrace(unsigned skipFrames) noexcept
|
||||
}
|
||||
|
||||
return Stacktrace(std::move(btData.stackframes));
|
||||
#else // MIJIN_USE_LIBBACKTRACE
|
||||
(void) skipFrames;
|
||||
return {}; // TODO
|
||||
#endif // MIJIN_USE_LIBBACKTRACE
|
||||
}
|
||||
|
||||
const Optional<Stacktrace>& getExceptionStacktrace() noexcept
|
||||
|
||||
Reference in New Issue
Block a user