diff --git a/src/hu_stuff.c b/src/hu_stuff.c
index 7f2560bcc4adc2f398d87aa8066119ee9ec3b455..91a0d352be532674df980200bf308330186978b0 100644
--- a/src/hu_stuff.c
+++ b/src/hu_stuff.c
@@ -395,8 +395,11 @@ void HU_AddChatText(const char *text, boolean playsound)
 
 	if (OLDCHAT) // if we're using oldchat, print directly in console
 		CONS_Printf("%s\n", text);
-	else			// if we aren't, still save the message to log.txt
-		CON_LogMessage(va("%s\n", text));
+	else			// if we aren't, still save the message to log.txt	
+	{
+		CON_LogMessage(text);
+		CON_LogMessage("\n"); // Add newline. Don't use va for that, since `text` might be refering to va's buffer itself
+	}
 }
 
 /** Runs a say command, sending an ::XD_SAY message.
diff --git a/src/m_misc.c b/src/m_misc.c
index 24616e9db42e2b27bab8c4d359e5d92b3945f6d7..f8087e8c2b920a44b5642e7ee8d9fb30c72ab62d 100644
--- a/src/m_misc.c
+++ b/src/m_misc.c
@@ -1720,7 +1720,7 @@ char *va(const char *format, ...)
 	static char string[1024];
 
 	va_start(argptr, format);
-	vsprintf(string, format, argptr);
+	vsnprintf(string, 1024, format, argptr);
 	va_end(argptr);
 
 	return string;