From d4f8f64929d94706fd54562c9eb7cf62bdbf6b91 Mon Sep 17 00:00:00 2001 From: Antony Polukhin Date: Fri, 25 Nov 2016 22:12:57 +0300 Subject: [PATCH] Fixed windows build and issue with returning incorrect frame address (now 0 retuned instead of running out of bounds) --- include/boost/stacktrace/detail/backend_linux.hpp | 2 +- include/boost/stacktrace/detail/backend_windows.hpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/boost/stacktrace/detail/backend_linux.hpp b/include/boost/stacktrace/detail/backend_linux.hpp index 2611ec9..a394ea7 100644 --- a/include/boost/stacktrace/detail/backend_linux.hpp +++ b/include/boost/stacktrace/detail/backend_linux.hpp @@ -195,7 +195,7 @@ std::string backend::get_name(const void* addr) { } const void* backend::get_address(std::size_t frame) const BOOST_NOEXCEPT { - return data_->buffer[frame]; + return frame < data_->frames_count ? data_->buffer[frame] : 0; } std::string backend::get_source_file(const void* addr) { diff --git a/include/boost/stacktrace/detail/backend_windows.hpp b/include/boost/stacktrace/detail/backend_windows.hpp index 3958a54..3406562 100644 --- a/include/boost/stacktrace/detail/backend_windows.hpp +++ b/include/boost/stacktrace/detail/backend_windows.hpp @@ -128,6 +128,7 @@ backend::backend(void* memory, std::size_t size, std::size_t& hash_code) BOOST_N } std::string backend::get_name(const void* addr) { + std::string result; com_holder idebug_; if (!try_init_com(idebug_)) { return result; @@ -166,10 +167,11 @@ std::string backend::get_name(const void* addr) { } const void* backend::get_address(std::size_t frame) const BOOST_NOEXCEPT { - return data_->buffer[frame]; + return frame < data_->frames_count ? data_->buffer[frame] : 0; } std::string backend::get_source_file(const void* addr) { + std::string result; com_holder idebug_; if (!try_init_com(idebug_)) { return result;