* Fixed NPC_TALK message being displayed with EOL character attached (bugreport:4596, since r14270).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14535 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
ai4rei 2010-12-01 17:07:14 +00:00
parent 459d8fd961
commit 9808dfb86b
2 changed files with 20 additions and 1 deletions

View File

@ -1,6 +1,7 @@
Date Added Date Added
2010/12/01 2010/12/01
* Fixed NPC_TALK message being displayed with EOL character attached (bugreport:4596, since r14270). [Ai4rei]
* Reverted change from r14533 and restored the 3rd field of mob_avail.txt being optional (bugreport:4599, since r14532). [Ai4rei] * Reverted change from r14533 and restored the 3rd field of mob_avail.txt being optional (bugreport:4599, since r14532). [Ai4rei]
* Monster database reading now utilizes sv_readdb. [Ai4rei] * Monster database reading now utilizes sv_readdb. [Ai4rei]
2010/11/30 2010/11/30

View File

@ -3830,8 +3830,10 @@ static int mob_read_randommonster(void)
*------------------------------------------*/ *------------------------------------------*/
static bool mob_parse_row_chatdb(char** str, const char* source, int line, int* last_msg_id) static bool mob_parse_row_chatdb(char** str, const char* source, int line, int* last_msg_id)
{ {
char* msg;
struct mob_chat *ms; struct mob_chat *ms;
int msg_id; int msg_id;
size_t len;
msg_id = atoi(str[0]); msg_id = atoi(str[0]);
@ -3853,13 +3855,29 @@ static bool mob_parse_row_chatdb(char** str, const char* source, int line, int*
//Color //Color
ms->color=strtoul(str[1],NULL,0); ms->color=strtoul(str[1],NULL,0);
//Message //Message
if(strlen(str[2])>(CHAT_SIZE_MAX-1)){ msg = str[2];
len = strlen(msg);
while( len && ( msg[len-1]=='\r' || msg[len-1]=='\n' ) )
{// find EOL to strip
len--;
}
if(len>(CHAT_SIZE_MAX-1))
{
if (msg_id != *last_msg_id) { if (msg_id != *last_msg_id) {
ShowError("mob_chat: readdb: Message too long! Line %d, id: %d\n", line, msg_id); ShowError("mob_chat: readdb: Message too long! Line %d, id: %d\n", line, msg_id);
*last_msg_id = msg_id; *last_msg_id = msg_id;
} }
return false; return false;
} }
else if( !len )
{
ShowWarning("mob_parse_row_chatdb: Empty message for id %d.\n", msg_id);
return false;
}
msg[len] = 0; // strip previously found EOL
strncpy(ms->msg, str[2], CHAT_SIZE_MAX); strncpy(ms->msg, str[2], CHAT_SIZE_MAX);
return true; return true;