Fix crashes/issues with non-broadcast network chat.

This commit is contained in:
Jonathan G Rennison
2017-05-01 14:50:45 +01:00
parent 9c74da46b1
commit e43f0dad21
2 changed files with 4 additions and 2 deletions

View File

@@ -272,6 +272,7 @@ void NetworkDrawChatMessage()
static void SendChat(const char *buf, DestType type, int dest) static void SendChat(const char *buf, DestType type, int dest)
{ {
if (StrEmpty(buf)) return; if (StrEmpty(buf)) return;
assert(type >= DESTTYPE_BROADCAST && type <= DESTTYPE_CLIENT);
if (!_network_server) { if (!_network_server) {
MyClient::SendChat((NetworkAction)(NETWORK_ACTION_CHAT + type), type, dest, buf, NetworkTextMessageData()); MyClient::SendChat((NetworkAction)(NETWORK_ACTION_CHAT + type), type, dest, buf, NetworkTextMessageData());
} else { } else {
@@ -303,7 +304,8 @@ struct NetworkChatWindow : public Window {
static const StringID chat_captions[] = { static const StringID chat_captions[] = {
STR_NETWORK_CHAT_ALL_CAPTION, STR_NETWORK_CHAT_ALL_CAPTION,
STR_NETWORK_CHAT_COMPANY_CAPTION, STR_NETWORK_CHAT_COMPANY_CAPTION,
STR_NETWORK_CHAT_CLIENT_CAPTION STR_NETWORK_CHAT_CLIENT_CAPTION,
STR_NULL,
}; };
assert((uint)this->dtype < lengthof(chat_captions)); assert((uint)this->dtype < lengthof(chat_captions));
this->dest_string = chat_captions[this->dtype]; this->dest_string = chat_captions[this->dtype];

View File

@@ -81,9 +81,9 @@ enum NetworkPasswordType {
/** Destination of our chat messages. */ /** Destination of our chat messages. */
enum DestType { enum DestType {
DESTTYPE_BROADCAST, ///< Send message/notice to all clients (All) DESTTYPE_BROADCAST, ///< Send message/notice to all clients (All)
DESTTYPE_BROADCAST_SS, ///< Send message/notice to all clients (All), but tag the broadcast to self as a self-send
DESTTYPE_TEAM, ///< Send message/notice to everyone playing the same company (Team) DESTTYPE_TEAM, ///< Send message/notice to everyone playing the same company (Team)
DESTTYPE_CLIENT, ///< Send message/notice to only a certain client (Private) DESTTYPE_CLIENT, ///< Send message/notice to only a certain client (Private)
DESTTYPE_BROADCAST_SS, ///< Send message/notice to all clients (All), but tag the broadcast to self as a self-send
}; };
/** Actions that can be used for NetworkTextMessage */ /** Actions that can be used for NetworkTextMessage */