(svn r1524) -"Feature": when windows exception tracker is enabled (release builds) and the game crashes for any reason any active log file is closed first. This ensures the log file and ingame debug messages can be used to debug a problem. Any *nix versions are welcome
authordarkvater
Sat, 15 Jan 2005 16:38:10 +0000
changeset 1023 8df956881058
parent 1022 9ea8ee93d6a9
child 1024 9b06b01490a4
(svn r1524) -"Feature": when windows exception tracker is enabled (release builds) and the game crashes for any reason any active log file is closed first. This ensures the log file and ingame debug messages can be used to debug a problem. Any *nix versions are welcome
console_cmds.c
win32.c
--- a/console_cmds.c	Sat Jan 15 15:48:05 2005 +0000
+++ b/console_cmds.c	Sat Jan 15 16:38:10 2005 +0000
@@ -595,20 +595,28 @@
 /* **************************** */
 /*   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;
 }
 
--- a/win32.c	Sat Jan 15 15:48:05 2005 +0000
+++ b/win32.c	Sat Jan 15 16:38:10 2005 +0000
@@ -1337,6 +1337,8 @@
 	DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(100), NULL, CrashDialogFunc);
 }
 
+extern bool CloseConsoleLogIfActive();
+
 static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep)
 {
 	char *output;
@@ -1442,13 +1444,17 @@
 		}
 	}
 
+	/* 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()