summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarkvater <darkvater@openttd.org>2005-09-14 17:21:30 +0000
committerDarkvater <darkvater@openttd.org>2005-09-14 17:21:30 +0000
commit1bf06d7da4043d007d8a174b2187153bc818bf83 (patch)
tree49aa96b79d8b0c7b5eafdd747125bbcf7e6ea077
parent236abb6a6cb96caf19f8bf026046910567745d40 (diff)
downloadopenttd-1bf06d7da4043d007d8a174b2187153bc818bf83.tar.xz
(svn r2950) -Fix: [ 1259327 ] Server crash with "say" -command
-rw-r--r--texteff.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/texteff.c b/texteff.c
index d53f22b7d..3e33a2dc6 100644
--- a/texteff.c
+++ b/texteff.c
@@ -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++) {