win32tty hangs if you ^C at "Who are you?"

From Newsgroups: rec.games.roguelike.nethack :
> <email deleted>
> Subject: question for windows tty users
>
> I am trying to hunt down a bug, and want to know if I have
> encountered another one of those bizarre "features" that only
> occur on my computer (I seem to get a lot of them).
>
> I can reproduce this bug, or whatever it is, in the official
> Windows binary like this: Start the tty version of NetHack by
> double clicking on the program. You won't see the bug if you
> start it from the command line. When the game asks, "Who are
> you?" press ^C. NetHack will respond with "^C abort. Hit
> <Enter> to end," and then it hangs. Pressing Enter does
> nothing, and the program does not end.
>
> Can anybody else reproduce this behaviour? Thanks in advance.
>
> -- <Someone>
This commit is contained in:
nethack.allison
2003-10-21 14:17:04 +00:00
parent 2d55849bb1
commit d07568164d
3 changed files with 12 additions and 6 deletions
+7 -1
View File
@@ -52,6 +52,10 @@ extern void FDECL(nethack_exit,(int));
#define nethack_exit exit #define nethack_exit exit
#endif #endif
#ifdef WIN32
extern boolean getreturn_enabled; /* from sys/share/pcsys.c */
#endif
#if defined(MSWIN_GRAPHICS) #if defined(MSWIN_GRAPHICS)
extern void NDECL(mswin_destroy_reg); extern void NDECL(mswin_destroy_reg);
#endif #endif
@@ -433,7 +437,9 @@ not_recovered:
#ifdef OS2 #ifdef OS2
gettty(); /* somehow ctrl-P gets turned back on during startup ... */ gettty(); /* somehow ctrl-P gets turned back on during startup ... */
#endif #endif
#ifdef WIN32
getreturn_enabled = TRUE;
#endif
return; return;
} }
+2 -2
View File
@@ -389,7 +389,7 @@ char *name;
} }
#ifdef WIN32 #ifdef WIN32
boolean getreturn_disable; boolean getreturn_enabled;
#endif #endif
void void
@@ -397,7 +397,7 @@ getreturn(str)
const char *str; const char *str;
{ {
#ifdef WIN32 #ifdef WIN32
if (getreturn_disable) return; if (!getreturn_enabled) return;
#endif #endif
#ifdef TOS #ifdef TOS
msmsg("Hit <Return> %s.", str); msmsg("Hit <Return> %s.", str);
+3 -3
View File
@@ -58,6 +58,8 @@ INPUT_RECORD ir;
int GUILaunched; int GUILaunched;
static BOOL FDECL(CtrlHandler, (DWORD)); static BOOL FDECL(CtrlHandler, (DWORD));
extern boolean getreturn_enabled; /* from sys/share/pcsys.c */
/* dynamic keystroke handling .DLL support */ /* dynamic keystroke handling .DLL support */
typedef int (__stdcall * PROCESS_KEYSTROKE)( typedef int (__stdcall * PROCESS_KEYSTROKE)(
HANDLE, HANDLE,
@@ -207,8 +209,6 @@ tty_end_screen()
FlushConsoleInputBuffer(hConIn); FlushConsoleInputBuffer(hConIn);
} }
extern boolean getreturn_disable; /* from sys/share/pcsys.c */
static BOOL CtrlHandler(ctrltype) static BOOL CtrlHandler(ctrltype)
DWORD ctrltype; DWORD ctrltype;
{ {
@@ -219,7 +219,7 @@ DWORD ctrltype;
case CTRL_CLOSE_EVENT: case CTRL_CLOSE_EVENT:
case CTRL_LOGOFF_EVENT: case CTRL_LOGOFF_EVENT:
case CTRL_SHUTDOWN_EVENT: case CTRL_SHUTDOWN_EVENT:
getreturn_disable = TRUE; getreturn_enabled = FALSE;
#ifndef NOSAVEONHANGUP #ifndef NOSAVEONHANGUP
hangup(0); hangup(0);
#endif #endif