Collect at most as many frames as requested.

This commit is contained in:
Jan Eisenhauer
2018-10-29 14:30:59 +01:00
parent 324a24abba
commit 77405d8d7f

View File

@@ -88,7 +88,7 @@ class basic_stacktrace {
#endif
std::vector<native_frame_ptr_t, allocator_void_t> buf(buffer_size * 2, 0, impl_.get_allocator());
do {
const std::size_t frames_count = boost::stacktrace::detail::this_thread_frames::collect(&buf[0], buf.size(), frames_to_skip + 1);
const std::size_t frames_count = boost::stacktrace::detail::this_thread_frames::collect(&buf[0], buf.size() < max_depth ? buf.size() : max_depth, frames_to_skip + 1);
if (buf.size() > frames_count || frames_count >= max_depth) {
const std::size_t size = (max_depth < frames_count ? max_depth : frames_count);
fill(&buf[0], size);