diff --git a/terminal.c b/terminal.c index a328783f..5d6c956d 100644 --- a/terminal.c +++ b/terminal.c @@ -3692,9 +3692,10 @@ term_command_output_to_text(const struct terminal *term, char **text, size_t *le const struct grid *grid = term->grid; const int sb_end = grid_row_absolute(grid, term->rows - 1); - int r = (sb_end - 1 + grid->num_rows) & (grid->num_rows - 1); + const int sb_start = (sb_end + 1) & (grid->num_rows - 1); + int r = sb_end; - while (start_row < 0 && r != sb_end) { + while (start_row < 0) { const struct row *row = grid->rows[r]; if (row == NULL) break; @@ -3709,6 +3710,9 @@ term_command_output_to_text(const struct terminal *term, char **text, size_t *le start_col = row->shell_integration.cmd_start; } + if (r == sb_start) + break; + r = (r - 1 + grid->num_rows) & (grid->num_rows - 1); }