summaryrefslogtreecommitdiff
path: root/src/Exceptions.cc
diff options
context:
space:
mode:
authorNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-12-18 23:41:54 -0800
committerNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-12-18 23:41:54 -0800
commitaec952125146ef754b755f75bf9281d16e837155 (patch)
treef9632a7fc772044142a589ac6bd41584be830bb2 /src/Exceptions.cc
parentb2f3f5217a0e9833479367bc3ebbb7926819b71b (diff)
Visual Studio port.
Diffstat (limited to 'src/Exceptions.cc')
-rw-r--r--src/Exceptions.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/Exceptions.cc b/src/Exceptions.cc
index a9df9e6..b4646ce 100644
--- a/src/Exceptions.cc
+++ b/src/Exceptions.cc
@@ -27,11 +27,16 @@ void Balau::GeneralException::genTrace() {
for (i = 0; i < frames; i++) {
SymFromAddr(process, (DWORD64)(stack[i]), 0, symbol);
- int status;
+ int status = 0;
String line;
+#ifndef _MSC_VER
char * demangled = abi::__cxa_demangle(symbol->Name, 0, 0, &status);
- line.set("%i: 0x%08x (%s)", i, symbol->Address, status == 0 ? demangled : symbol->Name);
- free(demangled);
+#else
+ char * demangled = NULL;
+#endif
+ line.set("%i: 0x%08x (%s)", i, symbol->Address, status == 0 && demangled ? demangled : symbol->Name);
+ if (demangled)
+ free(demangled);
m_trace.push_back(line);
}