From de83c29ba0a517630b361ffdbebd1a1f0b5eed4e Mon Sep 17 00:00:00 2001
From: est31 <MTest31@outlook.com>
Date: Thu, 6 Oct 2016 03:32:52 +0200
Subject: [PATCH] Fix crash regression when chatting in the ncurses console

Fixes #4579, a regression introduced by commit

d4c76258e37337ea585cf24d8e05b50a30fa307d "Chat: new settings to prevent spam"
---
 src/server.cpp | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/src/server.cpp b/src/server.cpp
index 5b67b321a..a8494f76e 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -2751,19 +2751,21 @@ std::wstring Server::handleChat(const std::string &name, const std::wstring &wna
 	if (ate)
 		return L"";
 
-	switch (player->canSendChatMessage()) {
-		case RPLAYER_CHATRESULT_FLOODING: {
-			std::wstringstream ws;
-			ws << L"You cannot send more messages. You are limited to "
-			   << g_settings->getFloat("chat_message_limit_per_10sec")
-			   << " messages per 10 seconds.";
-			return ws.str();
+	if (player) {
+		switch (player->canSendChatMessage()) {
+			case RPLAYER_CHATRESULT_FLOODING: {
+				std::wstringstream ws;
+				ws << L"You cannot send more messages. You are limited to "
+				<< g_settings->getFloat("chat_message_limit_per_10sec")
+				<< " messages per 10 seconds.";
+				return ws.str();
+			}
+			case RPLAYER_CHATRESULT_KICK:
+				DenyAccess_Legacy(player->peer_id, L"You have been kicked due to message flooding.");
+				return L"";
+			case RPLAYER_CHATRESULT_OK: break;
+			default: FATAL_ERROR("Unhandled chat filtering result found.");
 		}
-		case RPLAYER_CHATRESULT_KICK:
-			DenyAccess_Legacy(player->peer_id, L"You have been kicked due to message flooding.");
-			return L"";
-		case RPLAYER_CHATRESULT_OK: break;
-		default: FATAL_ERROR("Unhandled chat filtering result found.");
 	}
 
 	if (m_max_chatmessage_length > 0 && wmessage.length() > m_max_chatmessage_length) {
-- 
GitLab