From a62c62fd968dfd6499a9cbef896ac0bd344e02ff Mon Sep 17 00:00:00 2001 From: nhmall Date: Sun, 22 Dec 2024 20:45:55 -0500 Subject: [PATCH] follow-up for --showpaths Ensure that memory allocations are freed up. Windows: Fix a Windows compiler warning. Fix an undefined link symbol. --- include/decl.h | 2 +- src/files.c | 7 +++++++ src/save.c | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/decl.h b/include/decl.h index 9859c3e24..fb444cbf6 100644 --- a/include/decl.h +++ b/include/decl.h @@ -342,7 +342,7 @@ struct instance_globals_d { /* new */ boolean deferred_showpaths; - const char *deferred_showpaths_dir; + char *deferred_showpaths_dir; boolean havestate; unsigned long magic; /* validate that structure layout is preserved */ diff --git a/src/files.c b/src/files.c index 8a23a0175..0d36deaa3 100644 --- a/src/files.c +++ b/src/files.c @@ -4482,12 +4482,19 @@ do_deferred_showpaths(int code) gd.deferred_showpaths = FALSE; reveal_paths(code); + /* cleanup before heading to an exit */ + freedynamicdata(); + dlb_cleanup(); + l_nhcore_done(); + #ifdef UNIX after_opt_showpaths(gd.deferred_showpaths_dir); #else +#ifndef WIN32 #ifdef CHDIR chdirx(gd.deferred_showpaths_dir, 0); #endif +#endif #if defined(WIN32) || defined(MICRO) || defined(OS2) nethack_exit(EXIT_SUCCESS); #else diff --git a/src/save.c b/src/save.c index 1497c4d5b..933a0b0f8 100644 --- a/src/save.c +++ b/src/save.c @@ -1278,6 +1278,9 @@ freedynamicdata(void) if (options_set_window_colors_flag) options_free_window_colors(); + if (glyphid_cache_status()) + free_glyphid_cache(); + /* last, because it frees data that might be used by panic() to provide feedback to the user; conceivably other freeing might trigger panic */ sysopt_release(); /* SYSCF strings */