a late bot() call was observed on GUI Windows so prevent such a crash

This commit is contained in:
nhmall
2018-12-08 22:08:55 -05:00
parent 01625455d9
commit afc34d3016
3 changed files with 25 additions and 6 deletions
+2 -1
View File
@@ -234,7 +234,8 @@ do_statusline2()
void void
bot() bot()
{ {
if (youmonst.data && iflags.status_updates) { /* dosave() flags completion by setting u.uhp to -1 */
if ((u.uhp != -1) && youmonst.data && iflags.status_updates) {
#ifdef STATUS_HILITES #ifdef STATUS_HILITES
bot_via_windowport(); bot_via_windowport();
#else #else
+16 -5
View File
@@ -11,7 +11,7 @@
* assigned to the windowproc function pointers very early * assigned to the windowproc function pointers very early
* in the startup initialization, perhaps immediately even. * in the startup initialization, perhaps immediately even.
* It requires only the following call: * It requires only the following call:
* windowprocs = get_safe_procs(0); * windowprocs = *get_safe_procs(0);
* *
* The game startup can trigger functions in other modules * The game startup can trigger functions in other modules
* that make assumptions on a WindowPort being available * that make assumptions on a WindowPort being available
@@ -45,12 +45,23 @@
* *
* The additional platform-independent, but more functional * The additional platform-independent, but more functional
* routines provided in here should be assigned after the * routines provided in here should be assigned after the
* windowprocs = get_safe_procs() * windowprocs = *get_safe_procs(n)
* call. Here's a list of them: * call.
* *
* * Usage:
*
* windowprocs = *get_safe_procs(0);
* initializes a set of winprocs function pointers that ensure
* none of the function pointers are left null, but that's all
* it does.
*
* windowprocs = *get_safe_procs(1);
* initializes a set of winprocs functions pointers that ensure
* none of the function pointers are left null, but also
* provides some basic output and input functionality using
* nothing other than C stdio routines (no platform-specific
* or OS-specific code).
* *
*
* *********************************************************** * ***********************************************************
*/ */
+7
View File
@@ -718,6 +718,13 @@ mswin_exit_nhwindows(const char *str)
/* Write Window settings to the registry */ /* Write Window settings to the registry */
mswin_write_reg(); mswin_write_reg();
/* set things back to failsafes */
windowprocs = *get_safe_procs(0);
/* and make sure there is still a way to communicate something */
windowprocs.win_raw_print = mswin_raw_print;
windowprocs.win_raw_print_bold = mswin_raw_print_bold;
windowprocs.win_wait_synch = mswin_wait_synch;
} }
/* Prepare the window to be suspended. */ /* Prepare the window to be suspended. */