summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--console_cmds.c18
-rw-r--r--win32.c10
2 files changed, 21 insertions, 7 deletions
diff --git a/console_cmds.c b/console_cmds.c
index 73eaca08f..cf58e0b1b 100644
--- a/console_cmds.c
+++ b/console_cmds.c
@@ -595,20 +595,28 @@ DEF_CONSOLE_CMD(ConReturn)
/* **************************** */
/* default console commands */
/* **************************** */
-
-DEF_CONSOLE_CMD(ConScript)
+bool CloseConsoleLogIfActive()
{
extern FILE* _iconsole_output_file;
if (_iconsole_output_file != NULL) {
IConsolePrintF(_iconsole_color_default, "file output complete");
fclose(_iconsole_output_file);
- } else {
+ return true;
+ }
+
+ return false;
+}
+
+DEF_CONSOLE_CMD(ConScript)
+{
+ extern FILE* _iconsole_output_file;
+ if (!CloseConsoleLogIfActive()) {
if (argc < 2) return NULL;
- IConsolePrintF(_iconsole_color_default, "file output started to: %s",
- argv[1]);
+ IConsolePrintF(_iconsole_color_default, "file output started to: %s", argv[1]);
_iconsole_output_file = fopen(argv[1], "ab");
if (_iconsole_output_file == NULL) IConsoleError("could not open file");
}
+
return NULL;
}
diff --git a/win32.c b/win32.c
index bb83fed72..1a8bbb324 100644
--- a/win32.c
+++ b/win32.c
@@ -1337,6 +1337,8 @@ static void Handler2()
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(100), NULL, CrashDialogFunc);
}
+extern bool CloseConsoleLogIfActive();
+
static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep)
{
char *output;
@@ -1442,13 +1444,17 @@ static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep)
}
}
+ /* Close any possible log files */
+ CloseConsoleLogIfActive();
+
if (_safe_esp) {
ep->ContextRecord->Eip = (DWORD)Handler2;
ep->ContextRecord->Esp = (DWORD)_safe_esp;
return EXCEPTION_CONTINUE_EXECUTION;
- } else {
- return EXCEPTION_EXECUTE_HANDLER;
}
+
+
+ return EXCEPTION_EXECUTE_HANDLER;
}
static void Win32InitializeExceptions()