From 0bb278bcddf3a9ab21891889fa9ba3bcacc2d24f Mon Sep 17 00:00:00 2001 From: Sebastian Messmer Date: Sat, 3 Oct 2015 01:23:30 +0200 Subject: [PATCH] Fix backtraces in asserts --- assert/assert.h | 7 ++++--- assert/backtrace.cpp | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/assert/assert.h b/assert/assert.h index 771b2af1..9f6568aa 100644 --- a/assert/assert.h +++ b/assert/assert.h @@ -17,9 +17,10 @@ namespace cpputils { namespace _assert { inline std::string format(const char *expr, const char *message, const char *file, int line) { // get void*'s for all entries on the stack - void *array[10]; - size_t size = backtrace(array, sizeof(array)); - char **backtrace_str = backtrace_symbols(array, sizeof(backtrace_str)); + constexpr unsigned int MAX_SIZE = 100; + void *array[MAX_SIZE]; + size_t size = backtrace(array, MAX_SIZE); + char **backtrace_str = backtrace_symbols(array, size); std::string result = std::string()+"Assertion ["+expr+"] failed in "+file+":"+std::to_string(line)+": "+message+"\n\n"; for (unsigned int i = 0; i < size; ++i) { result += std::string(backtrace_str[i]) + "\n"; diff --git a/assert/backtrace.cpp b/assert/backtrace.cpp index ad5a7085..eea50aaf 100644 --- a/assert/backtrace.cpp +++ b/assert/backtrace.cpp @@ -9,8 +9,9 @@ namespace cpputils { void sigsegv_handler(int) { - void *array[100]; - size_t size = backtrace(array, sizeof(array)); + constexpr unsigned int MAX_SIZE = 100; + void *array[MAX_SIZE]; + size_t size = backtrace(array, MAX_SIZE); std::cerr << "Error: SIGSEGV" << std::endl; backtrace_symbols_fd(array, size, STDERR_FILENO);