From 18c61a9a2abddf1688fcbe6ac2c63d7faffcf7f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Wed, 10 Jul 2019 09:55:53 +0200 Subject: [PATCH] scrollback: fix off-by-one when grid size matches terminal/window size --- commands.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/commands.c b/commands.c index f66609cb..006e537c 100644 --- a/commands.c +++ b/commands.c @@ -30,13 +30,13 @@ cmd_scrollback_up(struct terminal *term, int rows) new_view = (new_view + 1) % term->grid->num_rows; /* Don't scroll past scrollback history */ - int end = (term->grid->offset + term->rows) % term->grid->num_rows; + int end = (term->grid->offset + term->rows - 1) % term->grid->num_rows; if (end >= term->grid->offset) { /* Not wrapped */ - if (new_view >= term->grid->offset && new_view < end) + if (new_view >= term->grid->offset && new_view <= end) new_view = end; } else { - if (new_view >= term->grid->offset || new_view < end) + if (new_view >= term->grid->offset || new_view <= end) new_view = end; } @@ -85,13 +85,13 @@ cmd_scrollback_down(struct terminal *term, int rows) } while (!all_initialized); /* Don't scroll past scrollback history */ - int end = (term->grid->offset + term->rows) % term->grid->num_rows; + int end = (term->grid->offset + term->rows - 1) % term->grid->num_rows; if (end >= term->grid->offset) { /* Not wrapped */ - if (new_view >= term->grid->offset && new_view < end) + if (new_view >= term->grid->offset && new_view <= end) new_view = term->grid->offset; } else { - if (new_view >= term->grid->offset || new_view < end) + if (new_view >= term->grid->offset || new_view <= end) new_view = term->grid->offset; }