mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 22:58:34 +00:00
Fix for OP_FormattedMessage text link server crashes
This commit is contained in:
+17
-8
@@ -2813,7 +2813,7 @@ void Client::Message_StringID(uint32 type, uint32 string_id, const char* message
|
||||
if (GetFilter(FilterDamageShields) == FilterHide && type == MT_DS)
|
||||
return;
|
||||
|
||||
int i, argcount, length;
|
||||
int i = 0, argcount = 0, length = 0;
|
||||
char *bufptr;
|
||||
const char *message_arg[9] = {0};
|
||||
|
||||
@@ -2826,7 +2826,6 @@ void Client::Message_StringID(uint32 type, uint32 string_id, const char* message
|
||||
return;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
message_arg[i++] = message1;
|
||||
message_arg[i++] = message2;
|
||||
message_arg[i++] = message3;
|
||||
@@ -2837,10 +2836,13 @@ void Client::Message_StringID(uint32 type, uint32 string_id, const char* message
|
||||
message_arg[i++] = message8;
|
||||
message_arg[i++] = message9;
|
||||
|
||||
for(argcount = length = 0; message_arg[argcount]; argcount++)
|
||||
for(; message_arg[argcount]; ++argcount)
|
||||
length += strlen(message_arg[argcount]) + 1;
|
||||
|
||||
EQApplicationPacket* outapp = new EQApplicationPacket(OP_FormattedMessage, length+13);
|
||||
if (length == 0)
|
||||
length = 1;
|
||||
|
||||
EQApplicationPacket* outapp = new EQApplicationPacket(OP_FormattedMessage, sizeof(FormattedMessage_Struct) + length);
|
||||
FormattedMessage_Struct *fm = (FormattedMessage_Struct *)outapp->pBuffer;
|
||||
fm->string_id = string_id;
|
||||
fm->type = type;
|
||||
@@ -2851,6 +2853,8 @@ void Client::Message_StringID(uint32 type, uint32 string_id, const char* message
|
||||
bufptr += strlen(message_arg[i]) + 1;
|
||||
}
|
||||
|
||||
if (argcount == 0)
|
||||
bufptr = '\0';
|
||||
|
||||
if(distance>0)
|
||||
entity_list.QueueCloseClients(this,outapp,false,distance);
|
||||
@@ -2925,7 +2929,7 @@ void Client::FilteredMessage_StringID(Mob *sender, uint32 type, eqFilterType fil
|
||||
if (!FilteredMessageCheck(sender, filter))
|
||||
return;
|
||||
|
||||
int i, argcount, length;
|
||||
int i = 0, argcount = 0, length = 0;
|
||||
char *bufptr;
|
||||
const char *message_arg[9] = {0};
|
||||
|
||||
@@ -2937,7 +2941,6 @@ void Client::FilteredMessage_StringID(Mob *sender, uint32 type, eqFilterType fil
|
||||
return;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
message_arg[i++] = message1;
|
||||
message_arg[i++] = message2;
|
||||
message_arg[i++] = message3;
|
||||
@@ -2948,10 +2951,13 @@ void Client::FilteredMessage_StringID(Mob *sender, uint32 type, eqFilterType fil
|
||||
message_arg[i++] = message8;
|
||||
message_arg[i++] = message9;
|
||||
|
||||
for (argcount = length = 0; message_arg[argcount]; argcount++)
|
||||
for (; message_arg[argcount]; ++argcount)
|
||||
length += strlen(message_arg[argcount]) + 1;
|
||||
|
||||
EQApplicationPacket *outapp = new EQApplicationPacket(OP_FormattedMessage, length+13);
|
||||
if (length == 0)
|
||||
length = 1;
|
||||
|
||||
EQApplicationPacket *outapp = new EQApplicationPacket(OP_FormattedMessage, sizeof(FormattedMessage_Struct) + length);
|
||||
FormattedMessage_Struct *fm = (FormattedMessage_Struct *)outapp->pBuffer;
|
||||
fm->string_id = string_id;
|
||||
fm->type = type;
|
||||
@@ -2961,6 +2967,9 @@ void Client::FilteredMessage_StringID(Mob *sender, uint32 type, eqFilterType fil
|
||||
bufptr += strlen(message_arg[i]) + 1;
|
||||
}
|
||||
|
||||
if (argcount == 0)
|
||||
bufptr = '\0';
|
||||
|
||||
QueuePacket(outapp);
|
||||
safe_delete(outapp);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user