]> granicus.if.org Git - nethack/commitdiff
Windows console limits
authornhmall <nhmall@nethack.org>
Fri, 1 Jul 2022 12:37:10 +0000 (08:37 -0400)
committernhmall <nhmall@nethack.org>
Fri, 1 Jul 2022 12:37:10 +0000 (08:37 -0400)
sys/windows/consoletty.c

index e96708416d7eef3e225890208537cf57ab2ed1f9..5dd6cbd4c55ae26d20fa953b9e6138813ad0cc9e 100644 (file)
@@ -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