From: nhmall Date: Fri, 1 Jul 2022 12:37:10 +0000 (-0400) Subject: Windows console limits X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1e17efe1438eeb9870e5f59ca649d1ec3f686b7f;p=nethack Windows console limits --- diff --git a/sys/windows/consoletty.c b/sys/windows/consoletty.c index e96708416..5dd6cbd4c 100644 --- a/sys/windows/consoletty.c +++ b/sys/windows/consoletty.c @@ -1182,6 +1182,11 @@ really_move_cursor() void cmov(int x, int y) { + if (x >= console.width) + x = console.width - 1; + if (y >= console.height) + y = console.height - 1; + ttyDisplay->cury = y; ttyDisplay->curx = x; @@ -1221,8 +1226,11 @@ xputs(const char* s) int xputc(int ch) { - set_console_cursor(ttyDisplay->curx, ttyDisplay->cury); - xputc_core(ch); + int x = ttyDisplay->curx, y = ttyDisplay->cury; + if (x < console.width && y < console.height) { + set_console_cursor(ttyDisplay->curx, ttyDisplay->cury); + xputc_core(ch); + } return 0; } @@ -1432,10 +1440,14 @@ term_end_24bitcolor(void) void cl_end(void) { - set_console_cursor(ttyDisplay->curx, ttyDisplay->cury); - buffer_clear_to_end_of_line(console.back_buffer, console.cursor.X, - console.cursor.Y); - tty_curs(BASE_WINDOW, (int) ttyDisplay->curx + 1, (int) ttyDisplay->cury); + if (ttyDisplay->curx < console.width + && ttyDisplay->cury < console.height) { + set_console_cursor(ttyDisplay->curx, ttyDisplay->cury); + buffer_clear_to_end_of_line(console.back_buffer, console.cursor.X, + console.cursor.Y); + tty_curs(BASE_WINDOW, (int) ttyDisplay->curx + 1, + (int) ttyDisplay->cury); + } } void