Mercurial > jwe > octave
changeset 29678:0181e1e5ec67
maint: merge stable to default.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 14 May 2021 18:13:58 -0700 |
parents | df0f97c4fb18 (current diff) 68d64190da65 (diff) |
children | fc8d0a32d840 |
files | libinterp/corefcn/debug.cc |
diffstat | 1 files changed, 9 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/debug.cc Fri May 14 15:19:16 2021 -0700 +++ b/libinterp/corefcn/debug.cc Fri May 14 18:13:58 2021 -0700 @@ -830,7 +830,7 @@ octave_idx_type curr_frame = -1; - std::size_t nskip = 0; + octave_idx_type nskip = 0; if (nargin == 1 || nargin == 2) { @@ -913,12 +913,15 @@ { octave_map stk = tw.backtrace (curr_frame, false); - // If current stack frame is not in the list curr_frame will be - // -1 and either nskip caused us to skip it or we are at the top - // level, which is not included in the list of frames. So in the - // interpreter, 0 will be our invalid frame index value. + octave_idx_type num_skip = std::min (nskip, stk.numel ()); + + for (octave_idx_type i = 0; i < num_skip; i++) + stk.delete_elements (idx_vector (0)); - retval = ovl (stk, curr_frame + 1); + curr_frame -= num_skip; + curr_frame = (curr_frame < 0 ? 0 : curr_frame + 1); + + retval = ovl (stk, curr_frame); } return retval;