diff --git a/texteff.c b/texteff.c index d53f22b7d1..3e33a2dc6a 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++) {