Fixed chat_createnpcchat() not checking if a chatroom already exists, producing memleaks in certain situations (bugreport:2325).
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13269 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
5789db9356
commit
90ad9f3a8c
@ -4,6 +4,7 @@
|
||||
#include "../common/cbasetypes.h"
|
||||
#include "../common/malloc.h"
|
||||
#include "../common/nullpo.h"
|
||||
#include "../common/showmsg.h"
|
||||
#include "../common/strlib.h"
|
||||
#include "atcommand.h" // msg_txt()
|
||||
#include "battle.h" // struct battle_config
|
||||
@ -293,6 +294,12 @@ int chat_createnpcchat(struct npc_data* nd, const char* title, int limit, bool p
|
||||
struct chat_data* cd;
|
||||
nullpo_retr(0, nd);
|
||||
|
||||
if( nd->chat_id )
|
||||
{
|
||||
ShowError("chat_createnpcchat: npc '%s' already has a chatroom, cannot create new one!\n", nd->exname);
|
||||
return 0;
|
||||
}
|
||||
|
||||
cd = chat_createchat(&nd->bl, title, "", limit, pub, trigger, ev);
|
||||
if( cd )
|
||||
{
|
||||
|
@ -1328,9 +1328,10 @@ void clif_changemapserver(struct map_session_data* sd, unsigned short map_index,
|
||||
void clif_blown(struct block_list *bl)
|
||||
{
|
||||
//Aegis packets says fixpos, but it's unsure whether slide works better or not.
|
||||
// return clif_fixpos(bl);
|
||||
// clif_fixpos(bl);
|
||||
clif_slide(bl, bl->x, bl->y);
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
*
|
||||
*------------------------------------------*/
|
||||
|
@ -8461,8 +8461,11 @@ BUILDIN_FUNC(waitingroom)
|
||||
ev = script_getstr(st, 4);
|
||||
trigger = limit;
|
||||
}
|
||||
if( (nd=(struct npc_data *)map_id2bl(st->oid)) != NULL )
|
||||
|
||||
nd = (struct npc_data *)map_id2bl(st->oid);
|
||||
if( nd != NULL )
|
||||
chat_createnpcchat(nd, title, limit, pub, trigger, ev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user