(svn r7292) -Codechange: Also validate an strip of colours the console string passed to the dedicated
authorDarkvater
Wed, 29 Nov 2006 21:38:19 +0000
changeset 5182 1ea4df8be34e
parent 5181 3c4dfc69ebb8
child 5183 1471222f00f7
(svn r7292) -Codechange: Also validate an strip of colours the console string passed to the dedicated
console or logfile.
console.c
--- a/console.c	Wed Nov 29 20:56:30 2006 +0000
+++ b/console.c	Wed Nov 29 21:38:19 2006 +0000
@@ -369,6 +369,7 @@
  */
 void IConsolePrint(uint16 color_code, const char *string)
 {
+	char *str;
 #ifdef ENABLE_NETWORK
 	if (_redirect_console_to_client != 0) {
 		/* Redirect the string to the client */
@@ -377,9 +378,16 @@
 	}
 #endif
 
+	/* Create a copy of the string, strip if of colours and invalid
+	 * characters and (when applicable) assign it to the console buffer */
+	str = strdup(string);
+	str_strip_colours(str);
+	str_validate(str);
+
 	if (_network_dedicated) {
-		printf("%s\n", string);
-		IConsoleWriteToLogFile(string);
+		printf("%s\n", str);
+		IConsoleWriteToLogFile(str);
+		free(str); // free duplicated string since it's not used anymore
 		return;
 	}
 
@@ -387,15 +395,12 @@
 	 * to accomodate for the new command/message */
 	free(_iconsole_buffer[0]);
 	memmove(&_iconsole_buffer[0], &_iconsole_buffer[1], sizeof(_iconsole_buffer[0]) * ICON_BUFFER);
-	_iconsole_buffer[ICON_BUFFER] = strdup(string);
-
-	str_strip_colours(_iconsole_buffer[ICON_BUFFER]);
-	str_validate(_iconsole_buffer[ICON_BUFFER]);
+	_iconsole_buffer[ICON_BUFFER] = str;
 
 	memmove(&_iconsole_cbuffer[0], &_iconsole_cbuffer[1], sizeof(_iconsole_cbuffer[0]) * ICON_BUFFER);
 	_iconsole_cbuffer[ICON_BUFFER] = color_code;
 
-	IConsoleWriteToLogFile(string);
+	IConsoleWriteToLogFile(_iconsole_buffer[ICON_BUFFER]);
 
 	SetWindowDirty(FindWindowById(WC_CONSOLE, 0));
 }