From accb14b797e24874dc312b1e6e7a51cfeadae93f Mon Sep 17 00:00:00 2001 From: nhmall Date: Thu, 14 May 2026 23:57:25 -0400 Subject: [PATCH] free up some console alloc()'d memory under curses tty takes care of this, but it wasn't being done under curses --- include/extern.h | 2 +- sys/windows/consoletty.c | 17 +++++++++++------ sys/windows/windsys.c | 7 +++++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/include/extern.h b/include/extern.h index bac993d62..8f113ba2d 100644 --- a/include/extern.h +++ b/include/extern.h @@ -2182,7 +2182,7 @@ extern void synch_cursor(void); extern void nethack_enter_consoletty(void); extern int get_console_width(void); extern int get_console_height(void); -extern void consoletty_exit(void); +extern void console_exit(void); extern int set_keyhandling_via_option(void); #ifdef ENHANCED_SYMBOLS extern void tty_utf8graphics_fixup(void); diff --git a/sys/windows/consoletty.c b/sys/windows/consoletty.c index 1e5cb7cd4..2fac8b212 100644 --- a/sys/windows/consoletty.c +++ b/sys/windows/consoletty.c @@ -954,7 +954,7 @@ tty_number_pad(int state UNUSED) void term_shutdown(void) { - consoletty_exit(); + console_exit(); } #ifdef ASCIIGRAPH @@ -1044,14 +1044,19 @@ consoletty_open(int mode UNUSED) extern void set_emergency_io(void); void -consoletty_exit(void) +console_exit(void) { free_custom_colors(); - free((genericptr_t) console.front_buffer); - free((genericptr_t) console.back_buffer); + if (console.front_buffer) + free((genericptr_t) console.front_buffer); + if (console.back_buffer) + free((genericptr_t) console.back_buffer); console.front_buffer = console.back_buffer = 0; - free((genericptr_t) console.localestr); - free((genericptr_t) console.orig_localestr); + if (console.localestr) + free((genericptr_t) console.localestr), console.localestr = 0; + if (console.orig_localestr) + free((genericptr_t) console.orig_localestr), + console.orig_localestr = 0; set_emergency_io(); } diff --git a/sys/windows/windsys.c b/sys/windows/windsys.c index bd8a9871f..91dc8eb40 100644 --- a/sys/windows/windsys.c +++ b/sys/windows/windsys.c @@ -526,6 +526,13 @@ nethack_exit(int code) genl_status_finish(); #ifdef MSWIN_GRAPHICS free_winmain_stuff(); +#endif +#ifdef WIN32CON +#ifdef CURSES_GRAPHICS + if (WINDOWPORT(curses)) { + console_exit(); + } +#endif #endif exit(code); }