diff options
author | Darkvater <darkvater@openttd.org> | 2005-09-14 17:21:30 +0000 |
---|---|---|
committer | Darkvater <darkvater@openttd.org> | 2005-09-14 17:21:30 +0000 |
commit | 1bf06d7da4043d007d8a174b2187153bc818bf83 (patch) | |
tree | 49aa96b79d8b0c7b5eafdd747125bbcf7e6ea077 | |
parent | 236abb6a6cb96caf19f8bf026046910567745d40 (diff) | |
download | openttd-1bf06d7da4043d007d8a174b2187153bc818bf83.tar.xz |
(svn r2950) -Fix: [ 1259327 ] Server crash with "say" -command
-rw-r--r-- | texteff.c | 16 |
1 files changed, 6 insertions, 10 deletions
@@ -55,25 +55,21 @@ extern void memcpy_pitch(void *d, void *s, int w, int h, int spitch, int dpitch) // Duration is in game-days void CDECL AddTextMessage(uint16 color, uint8 duration, const char *message, ...) { - int i; - char buf[1024]; - char buf2[MAX_TEXTMESSAGE_LENGTH]; + char buf[MAX_TEXTMESSAGE_LENGTH], buf2[MAX_TEXTMESSAGE_LENGTH]; va_list va; - int length; + int i, length; va_start(va, message); vsnprintf(buf, lengthof(buf), message, va); va_end(va); /* Special color magic */ - if ((color & 0xFF) == 0xC9) - color = 0x1CA; + if ((color & 0xFF) == 0xC9) color = 0x1CA; /* Cut the message till it fits inside the chatbox */ - length = strlen(buf) + 1; - snprintf(buf2, length, "%s", buf); - while (GetStringWidth(buf2) > _textmessage_width - 9) - snprintf(buf2, --length, "%s", buf); + snprintf(buf2, lengthof(buf2), "%s", buf); // remove any formatting + length = strlen(buf2); + while (GetStringWidth(buf2) > _textmessage_width - 9) buf2[--length] = '\0'; /* Find an empty spot and put the message there */ for (i = 0; i < MAX_CHAT_MESSAGES; i++) { |