summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/network/network.cpp2
-rw-r--r--src/network/network_chat_gui.cpp15
-rw-r--r--src/network/network_func.h2
3 files changed, 5 insertions, 14 deletions
diff --git a/src/network/network.cpp b/src/network/network.cpp
index bbf6bb5de..3965c200f 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -262,7 +262,7 @@ void NetworkTextMessage(NetworkAction action, TextColour colour, bool self_send,
DEBUG(desync, 1, "msg: %08x; %02x; %s", _date, _date_fract, message);
IConsolePrintF(colour, "%s", message);
- NetworkAddChatMessage((TextColour)colour, _settings_client.gui.network_chat_timeout, "%s", message);
+ NetworkAddChatMessage((TextColour)colour, _settings_client.gui.network_chat_timeout, message);
}
/* Calculate the frame-lag of a client */
diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp
index 14edc1503..e8fbf0f12 100644
--- a/src/network/network_chat_gui.cpp
+++ b/src/network/network_chat_gui.cpp
@@ -39,7 +39,7 @@ static const uint NETWORK_CHAT_LINE_SPACING = 3;
/** Container for a message. */
struct ChatMessage {
- char message[DRAW_STRING_BUFFER]; ///< The action message.
+ std::string message; ///< The action message.
TextColour colour; ///< The colour of the message.
std::chrono::steady_clock::time_point remove_time; ///< The time to remove the message.
};
@@ -87,23 +87,14 @@ static inline bool HaveChatMessages(bool show_all)
* @param duration The duration of the chat message in seconds
* @param message message itself in printf() style
*/
-void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const char *message, ...)
+void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const std::string &message)
{
- char buf[DRAW_STRING_BUFFER];
- va_list va;
-
- va_start(va, message);
- vseprintf(buf, lastof(buf), message, va);
- va_end(va);
-
- Utf8TrimString(buf, DRAW_STRING_BUFFER);
-
if (_chatmsg_list.size() == MAX_CHAT_MESSAGES) {
_chatmsg_list.pop_back();
}
ChatMessage *cmsg = &_chatmsg_list.emplace_front();
- strecpy(cmsg->message, buf, lastof(cmsg->message));
+ cmsg->message = message;
cmsg->colour = (colour & TC_IS_PALETTE_COLOUR) ? colour : TC_WHITE;
cmsg->remove_time = std::chrono::steady_clock::now() + std::chrono::seconds(duration);
diff --git a/src/network/network_func.h b/src/network/network_func.h
index ef81b0fb1..e7709d307 100644
--- a/src/network/network_func.h
+++ b/src/network/network_func.h
@@ -84,7 +84,7 @@ uint NetworkServerKickOrBanIP(ClientID client_id, bool ban, const char *reason);
uint NetworkServerKickOrBanIP(const char *ip, bool ban, const char *reason);
void NetworkInitChatMessage();
-void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const char *message, ...) WARN_FORMAT(3, 4);
+void CDECL NetworkAddChatMessage(TextColour colour, uint duration, const std::string &message);
void NetworkUndrawChatMessage();
void NetworkChatMessageLoop();