Do not move the cursor to the existing y position if it is invalid, go

home instead.
pull/2195/head
nicm 2020-04-17 21:33:18 +00:00
parent bbd6e899a8
commit a877a5d8c9
1 changed files with 10 additions and 3 deletions

13
tty.c
View File

@ -1739,7 +1739,10 @@ tty_cmd_scrollup(struct tty *tty, const struct tty_ctx *ctx)
for (i = 0; i < ctx->num; i++)
tty_putc(tty, '\n');
} else {
tty_cursor(tty, 0, tty->cy);
if (tty->cy == UINT_MAX)
tty_cursor(tty, 0, 0);
else
tty_cursor(tty, 0, tty->cy);
tty_putcode1(tty, TTYC_INDN, ctx->num);
}
}
@ -2063,8 +2066,12 @@ tty_region(struct tty *tty, u_int rupper, u_int rlower)
* flag so further output causes a line feed). As a workaround, do an
* explicit move to 0 first.
*/
if (tty->cx >= tty->sx)
tty_cursor(tty, 0, tty->cy);
if (tty->cx >= tty->sx) {
if (tty->cy == UINT_MAX)
tty_cursor(tty, 0, 0);
else
tty_cursor(tty, 0, tty->cy);
}
tty_putcode2(tty, TTYC_CSR, tty->rupper, tty->rlower);
tty->cx = tty->cy = UINT_MAX;