* Hunted down improper uses of va_list variables.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13383 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
25f95d2a7c
commit
7ae74b588b
@ -4,6 +4,7 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
|
||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||
|
||||
2008/11/22
|
||||
* Hunted down improper uses of va_list variables.
|
||||
* Hunted down the simpler 64bit pointer truncations. [FlavioJS]
|
||||
2008/11/18
|
||||
* Rev. 13375 Autotrade characters will no longer get caught by Urgent Recall. (bugreport:2447) [L0ne_W0lf]
|
||||
|
@ -673,6 +673,7 @@ char timestamp_format[20] = ""; //For displaying Timestamps
|
||||
|
||||
int _vShowMessage(enum msg_type flag, const char *string, va_list ap)
|
||||
{
|
||||
va_list apcopy;
|
||||
char prefix[100];
|
||||
#if defined(DEBUGLOGMAP) || defined(DEBUGLOGCHAR) || defined(DEBUGLOGLOGIN)
|
||||
FILE *fp;
|
||||
@ -734,12 +735,16 @@ int _vShowMessage(enum msg_type flag, const char *string, va_list ap)
|
||||
if (flag == MSG_ERROR || flag == MSG_FATALERROR || flag == MSG_SQL)
|
||||
{ //Send Errors to StdErr [Skotlex]
|
||||
FPRINTF(STDERR, "%s ", prefix);
|
||||
VFPRINTF(STDERR, string, ap);
|
||||
va_copy(apcopy, ap);
|
||||
VFPRINTF(STDERR, string, apcopy);
|
||||
va_end(apcopy);
|
||||
FFLUSH(STDERR);
|
||||
} else {
|
||||
if (flag != MSG_NONE)
|
||||
FPRINTF(STDOUT, "%s ", prefix);
|
||||
VFPRINTF(STDOUT, string, ap);
|
||||
va_copy(apcopy, ap);
|
||||
VFPRINTF(STDOUT, string, apcopy);
|
||||
va_end(apcopy);
|
||||
FFLUSH(STDOUT);
|
||||
}
|
||||
|
||||
@ -751,7 +756,9 @@ int _vShowMessage(enum msg_type flag, const char *string, va_list ap)
|
||||
FFLUSH(STDERR);
|
||||
} else {
|
||||
fprintf(fp,"%s ", prefix);
|
||||
vfprintf(fp,string,ap);
|
||||
va_copy(apcopy, ap);
|
||||
vfprintf(fp,string,apcopy);
|
||||
va_end(apcopy);
|
||||
fclose(fp);
|
||||
}
|
||||
} else {
|
||||
@ -760,7 +767,6 @@ int _vShowMessage(enum msg_type flag, const char *string, va_list ap)
|
||||
}
|
||||
#endif
|
||||
|
||||
va_end(ap);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -964,9 +964,12 @@ int StringBuf_Vprintf(StringBuf* self, const char* fmt, va_list ap)
|
||||
|
||||
for(;;)
|
||||
{
|
||||
va_list apcopy;
|
||||
/* Try to print in the allocated space. */
|
||||
size = self->max_ - (self->ptr_ - self->buf_);
|
||||
va_copy(apcopy, ap);
|
||||
n = vsnprintf(self->ptr_, size, fmt, ap);
|
||||
va_end(ap);
|
||||
/* If that worked, return the length. */
|
||||
if( n > -1 && n < size )
|
||||
{
|
||||
|
@ -2561,7 +2561,6 @@ static int atkillmonster_sub(struct block_list *bl, va_list ap)
|
||||
struct mob_data *md;
|
||||
int flag;
|
||||
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, md=(struct mob_data *)bl);
|
||||
flag = va_arg(ap, int);
|
||||
|
||||
@ -6311,35 +6310,12 @@ int atcommand_sound(const int fd, struct map_session_data *sd, const char *comma
|
||||
/*==========================================
|
||||
* MOB Search
|
||||
*------------------------------------------*/
|
||||
static int atmobsearch_sub(struct block_list *bl,va_list ap)
|
||||
{
|
||||
int mob_id,fd;
|
||||
static int number=0;
|
||||
struct mob_data *md;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
|
||||
if(!ap){
|
||||
number=0;
|
||||
return 0;
|
||||
}
|
||||
mob_id = va_arg(ap,int);
|
||||
fd = va_arg(ap,int);
|
||||
|
||||
md = (struct mob_data *)bl;
|
||||
|
||||
if(md && fd && (mob_id==-1 || (md->class_==mob_id))){
|
||||
snprintf(atcmd_output, sizeof atcmd_output, "%2d[%3d:%3d] %s",
|
||||
++number,bl->x, bl->y,md->name);
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int atcommand_mobsearch(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
||||
{
|
||||
char mob_name[100];
|
||||
int mob_id,map_id = 0;
|
||||
int number = 0;
|
||||
struct s_mapiterator* it;
|
||||
|
||||
nullpo_retr(-1, sd);
|
||||
|
||||
@ -6364,9 +6340,21 @@ int atcommand_mobsearch(const int fd, struct map_session_data* sd, const char* c
|
||||
snprintf(atcmd_output, sizeof atcmd_output, "Mob Search... %s %s", mob_name, mapindex_id2name(sd->mapindex));
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
|
||||
map_foreachinmap(atmobsearch_sub, map_id, BL_MOB, mob_id, fd);
|
||||
it = mapit_geteachmob();
|
||||
while( true )
|
||||
{
|
||||
TBL_MOB* md = (TBL_MOB*)mapit_next(it);
|
||||
if( md == NULL )
|
||||
break;// no more mobs
|
||||
|
||||
atmobsearch_sub(&sd->bl,0); // reset the counter
|
||||
if( mob_id == -1 || md->class_ == mob_id )
|
||||
{
|
||||
++number;
|
||||
snprintf(atcmd_output, sizeof atcmd_output, "%2d[%3d:%3d] %s", number, md->bl.x, md->bl.y, md->name);
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
}
|
||||
}
|
||||
mapit_free(it);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -7021,36 +7009,12 @@ int atshowmobs_timer(int tid, unsigned int tick, int id, intptr data)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int atshowmobs_sub(struct block_list *bl,va_list ap)
|
||||
{
|
||||
int mob_id;
|
||||
struct map_session_data* sd;
|
||||
static int number=0;
|
||||
struct mob_data *md;
|
||||
|
||||
if(!ap){
|
||||
number=0;
|
||||
return 0;
|
||||
}
|
||||
mob_id = va_arg(ap,int);
|
||||
sd = va_arg(ap,struct map_session_data*);
|
||||
|
||||
md = (struct mob_data *)bl;
|
||||
|
||||
if(md->special_state.ai || md->master_id)
|
||||
return 0; //Hide slaves and player summoned mobs. [Skotlex]
|
||||
|
||||
if(mob_id==-1 || md->class_==mob_id){
|
||||
clif_viewpoint(sd, 1, 1, bl->x, bl->y, ++number, 0xFFFFFF);
|
||||
add_timer(gettick()+5000, atshowmobs_timer, sd->bl.id, number);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int atcommand_showmobs(const int fd, struct map_session_data* sd, const char* command, const char* message)
|
||||
{
|
||||
char mob_name[100];
|
||||
int mob_id,map_id = 0;
|
||||
int number = 0;
|
||||
struct s_mapiterator* it;
|
||||
|
||||
nullpo_retr(-1, sd);
|
||||
|
||||
@ -7081,11 +7045,23 @@ int atcommand_showmobs(const int fd, struct map_session_data* sd, const char* co
|
||||
|
||||
snprintf(atcmd_output, sizeof atcmd_output, "Mob Search... %s %s",
|
||||
mob_name, mapindex_id2name(sd->mapindex));
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
|
||||
map_foreachinmap(atshowmobs_sub, map_id, BL_MOB, mob_id, sd);
|
||||
it = mapit_geteachmob();
|
||||
while( true )
|
||||
{
|
||||
TBL_MOB* md = (TBL_MOB*)mapit_next(it);
|
||||
if( md == NULL )
|
||||
break;// no more mobs
|
||||
|
||||
atshowmobs_sub(&sd->bl,0);
|
||||
if( mob_id == -1 || md->class_ == mob_id )
|
||||
{
|
||||
++number;
|
||||
clif_viewpoint(sd, 1, 1, md->bl.x, md->bl.y, number, 0xFFFFFF);
|
||||
add_timer(gettick()+5000, atshowmobs_timer, sd->bl.id, number);
|
||||
}
|
||||
}
|
||||
mapit_free(it);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -171,7 +171,6 @@ int clif_send_sub(struct block_list *bl, va_list ap)
|
||||
int len, type, fd;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, sd = (struct map_session_data *)bl);
|
||||
|
||||
fd = sd->fd;
|
||||
@ -3718,7 +3717,6 @@ void clif_01ac(struct block_list* bl)
|
||||
struct map_session_data *sd;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
|
||||
sd=va_arg(ap,struct map_session_data*);
|
||||
|
||||
|
@ -255,13 +255,13 @@ static void create_dummy_data(void)
|
||||
dummy_item.view_id=UNKNOWN_ITEM_ID;
|
||||
}
|
||||
|
||||
static void* create_item_data(DBKey key, va_list args)
|
||||
static struct item_data* create_item_data(int nameid)
|
||||
{
|
||||
struct item_data *id;
|
||||
CREATE(id, struct item_data, 1);
|
||||
id->nameid=key.i;
|
||||
id->weight=1;
|
||||
id->type=IT_ETC;
|
||||
id->nameid = nameid;
|
||||
id->weight = 1;
|
||||
id->type = IT_ETC;
|
||||
return id;
|
||||
}
|
||||
|
||||
@ -271,50 +271,42 @@ static void* create_item_data(DBKey key, va_list args)
|
||||
struct item_data* itemdb_load(int nameid)
|
||||
{
|
||||
struct item_data *id;
|
||||
DBKey key;
|
||||
|
||||
if( nameid >= 0 && nameid < ARRAYLENGTH(itemdb_array) )
|
||||
{
|
||||
id = itemdb_array[nameid];
|
||||
if( id == NULL )
|
||||
{
|
||||
key.i = nameid;
|
||||
id = itemdb_array[nameid] = (struct item_data*)create_item_data(key, NULL);
|
||||
}
|
||||
if( id == NULL || id == &dummy_item )
|
||||
id = itemdb_array[nameid] = create_item_data(nameid);
|
||||
return id;
|
||||
}
|
||||
|
||||
id = (struct item_data*)idb_ensure(itemdb_other, nameid, create_item_data);
|
||||
if( id == &dummy_item )
|
||||
{// Remove dummy_item, replace by real data.
|
||||
key.i = nameid;
|
||||
id = (struct item_data*)create_item_data(key, NULL);
|
||||
id = (struct item_data*)idb_get(itemdb_other, nameid);
|
||||
if( id == NULL || id == &dummy_item )
|
||||
{
|
||||
id = create_item_data(nameid);
|
||||
idb_put(itemdb_other, nameid, id);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
static void* return_dummy_data(DBKey key, va_list args)
|
||||
{
|
||||
ShowWarning("itemdb_search: Item ID %d does not exists in the item_db. Using dummy data.\n", key.i);
|
||||
dummy_item.nameid = key.i;
|
||||
return &dummy_item;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
* Loads an item from the db. If not found, it will return the dummy item.
|
||||
*------------------------------------------*/
|
||||
struct item_data* itemdb_search(int nameid)
|
||||
{
|
||||
struct item_data* id;
|
||||
if( nameid >= 0 && nameid < ARRAYLENGTH(itemdb_array) )
|
||||
id = itemdb_array[nameid];
|
||||
else
|
||||
id = (struct item_data*)idb_get(itemdb_other, nameid);
|
||||
|
||||
if( id == NULL )
|
||||
{
|
||||
DBKey key;
|
||||
if( itemdb_array[nameid] )
|
||||
return itemdb_array[nameid];
|
||||
key.i = nameid;
|
||||
return (struct item_data*)return_dummy_data(key, NULL);
|
||||
ShowWarning("itemdb_search: Item ID %d does not exists in the item_db. Using dummy data.\n", nameid);
|
||||
id = &dummy_item;
|
||||
dummy_item.nameid = nameid;
|
||||
}
|
||||
return (struct item_data*)idb_ensure(itemdb_other,nameid,return_dummy_data);
|
||||
return id;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
|
@ -511,13 +511,11 @@ struct skill_unit* map_find_skill_unit_oncell(struct block_list* target,int x,in
|
||||
*------------------------------------------*/
|
||||
int map_foreachinrange(int (*func)(struct block_list*,va_list), struct block_list* center, int range, int type, ...)
|
||||
{
|
||||
va_list ap;
|
||||
int bx,by,m;
|
||||
int returnCount =0; //total sum of returned values of func() [Skotlex]
|
||||
struct block_list *bl;
|
||||
int blockcount=bl_list_count,i;
|
||||
int x0,x1,y0,y1;
|
||||
va_start(ap,type);
|
||||
|
||||
m = center->m;
|
||||
x0 = max(center->x-range, 0);
|
||||
@ -562,11 +560,15 @@ int map_foreachinrange(int (*func)(struct block_list*,va_list), struct block_lis
|
||||
|
||||
for(i=blockcount;i<bl_list_count;i++)
|
||||
if(bl_list[i]->prev) // 有?かどうかチェック
|
||||
returnCount += func(bl_list[i],ap);
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, type);
|
||||
returnCount += func(bl_list[i], ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
map_freeblock_unlock(); // 解放を許可する
|
||||
|
||||
va_end(ap);
|
||||
bl_list_count = blockcount;
|
||||
return returnCount; //[Skotlex]
|
||||
}
|
||||
@ -576,7 +578,6 @@ int map_foreachinrange(int (*func)(struct block_list*,va_list), struct block_lis
|
||||
*------------------------------------------*/
|
||||
int map_foreachinshootrange(int (*func)(struct block_list*,va_list),struct block_list* center, int range, int type,...)
|
||||
{
|
||||
va_list ap;
|
||||
int bx,by,m;
|
||||
int returnCount =0; //total sum of returned values of func() [Skotlex]
|
||||
struct block_list *bl;
|
||||
@ -587,8 +588,6 @@ int map_foreachinshootrange(int (*func)(struct block_list*,va_list),struct block
|
||||
if (m < 0)
|
||||
return 0;
|
||||
|
||||
va_start(ap,type);
|
||||
|
||||
x0 = max(center->x-range, 0);
|
||||
y0 = max(center->y-range, 0);
|
||||
x1 = min(center->x+range, map[m].xs-1);
|
||||
@ -633,11 +632,15 @@ int map_foreachinshootrange(int (*func)(struct block_list*,va_list),struct block
|
||||
|
||||
for(i=blockcount;i<bl_list_count;i++)
|
||||
if(bl_list[i]->prev) // 有?かどうかチェック
|
||||
returnCount += func(bl_list[i],ap);
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, type);
|
||||
returnCount += func(bl_list[i], ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
map_freeblock_unlock(); // 解放を許可する
|
||||
|
||||
va_end(ap);
|
||||
bl_list_count = blockcount;
|
||||
return returnCount; //[Skotlex]
|
||||
}
|
||||
@ -649,7 +652,6 @@ int map_foreachinshootrange(int (*func)(struct block_list*,va_list),struct block
|
||||
*------------------------------------------*/
|
||||
int map_foreachinarea(int (*func)(struct block_list*,va_list), int m, int x0, int y0, int x1, int y1, int type, ...)
|
||||
{
|
||||
va_list ap;
|
||||
int bx,by;
|
||||
int returnCount =0; //total sum of returned values of func() [Skotlex]
|
||||
struct block_list *bl;
|
||||
@ -657,7 +659,6 @@ int map_foreachinarea(int (*func)(struct block_list*,va_list), int m, int x0, in
|
||||
|
||||
if (m < 0)
|
||||
return 0;
|
||||
va_start(ap,type);
|
||||
if (x1 < x0)
|
||||
{ //Swap range
|
||||
bx = x0;
|
||||
@ -696,11 +697,15 @@ int map_foreachinarea(int (*func)(struct block_list*,va_list), int m, int x0, in
|
||||
|
||||
for(i=blockcount;i<bl_list_count;i++)
|
||||
if(bl_list[i]->prev) // 有?かどうかチェック
|
||||
returnCount += func(bl_list[i],ap);
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, type);
|
||||
returnCount += func(bl_list[i], ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
map_freeblock_unlock(); // 解放を許可する
|
||||
|
||||
va_end(ap);
|
||||
bl_list_count = blockcount;
|
||||
return returnCount; //[Skotlex]
|
||||
}
|
||||
@ -717,13 +722,11 @@ int map_foreachinmovearea(int (*func)(struct block_list*,va_list), struct block_
|
||||
int bx,by,m;
|
||||
int returnCount =0; //total sum of returned values of func() [Skotlex]
|
||||
struct block_list *bl;
|
||||
va_list ap;
|
||||
int blockcount=bl_list_count,i;
|
||||
int x0, x1, y0, y1;
|
||||
|
||||
if (!range) return 0;
|
||||
if (!dx && !dy) return 0; //No movement.
|
||||
va_start(ap,type);
|
||||
m = center->m;
|
||||
|
||||
x0 = center->x-range;
|
||||
@ -830,11 +833,15 @@ int map_foreachinmovearea(int (*func)(struct block_list*,va_list), struct block_
|
||||
|
||||
for(i=blockcount;i<bl_list_count;i++)
|
||||
if(bl_list[i]->prev)
|
||||
returnCount += func(bl_list[i],ap);
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, type);
|
||||
returnCount += func(bl_list[i], ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
map_freeblock_unlock(); // 解放を許可する
|
||||
|
||||
va_end(ap);
|
||||
bl_list_count = blockcount;
|
||||
return returnCount;
|
||||
}
|
||||
@ -848,13 +855,10 @@ int map_foreachincell(int (*func)(struct block_list*,va_list), int m, int x, int
|
||||
int bx,by;
|
||||
int returnCount =0; //total sum of returned values of func() [Skotlex]
|
||||
struct block_list *bl;
|
||||
va_list ap;
|
||||
int blockcount=bl_list_count,i;
|
||||
|
||||
if (x < 0 || y < 0 || x >= map[m].xs || y >= map[m].ys) return 0;
|
||||
|
||||
va_start(ap,type);
|
||||
|
||||
by=y/BLOCK_SIZE;
|
||||
bx=x/BLOCK_SIZE;
|
||||
|
||||
@ -875,11 +879,15 @@ int map_foreachincell(int (*func)(struct block_list*,va_list), int m, int x, int
|
||||
|
||||
for(i=blockcount;i<bl_list_count;i++)
|
||||
if(bl_list[i]->prev) // 有?かどうかチェック
|
||||
returnCount += func(bl_list[i],ap);
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, type);
|
||||
returnCount += func(bl_list[i], ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
map_freeblock_unlock(); // 解放を許可する
|
||||
|
||||
va_end(ap);
|
||||
bl_list_count = blockcount;
|
||||
return returnCount;
|
||||
}
|
||||
@ -924,7 +932,6 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y
|
||||
// kRO.
|
||||
|
||||
//Generic map_foreach* variables.
|
||||
va_list ap;
|
||||
int i, blockcount = bl_list_count;
|
||||
struct block_list *bl;
|
||||
int bx, by;
|
||||
@ -938,8 +945,6 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y
|
||||
|
||||
if (m < 0)
|
||||
return 0;
|
||||
|
||||
va_start(ap,type);
|
||||
|
||||
len_limit = magnitude2 = MAGNITUDE2(x0,y0, x1,y1);
|
||||
if (magnitude2 < 1) //Same begin and ending point, can't trace path.
|
||||
@ -1068,11 +1073,15 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y
|
||||
|
||||
for(i=blockcount;i<bl_list_count;i++)
|
||||
if(bl_list[i]->prev) //This check is done in case some object gets killed due to further skill processing.
|
||||
returnCount += func(bl_list[i],ap);
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, type);
|
||||
returnCount += func(bl_list[i], ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
map_freeblock_unlock();
|
||||
|
||||
va_end(ap);
|
||||
bl_list_count = blockcount;
|
||||
return returnCount; //[Skotlex]
|
||||
|
||||
@ -1084,11 +1093,8 @@ int map_foreachinmap(int (*func)(struct block_list*,va_list), int m, int type,..
|
||||
int b, bsize;
|
||||
int returnCount =0; //total sum of returned values of func() [Skotlex]
|
||||
struct block_list *bl;
|
||||
va_list ap;
|
||||
int blockcount=bl_list_count,i;
|
||||
|
||||
va_start(ap,type);
|
||||
|
||||
bsize = map[m].bxs * map[m].bys;
|
||||
|
||||
if(type&~BL_MOB)
|
||||
@ -1110,11 +1116,15 @@ int map_foreachinmap(int (*func)(struct block_list*,va_list), int m, int type,..
|
||||
|
||||
for(i=blockcount;i<bl_list_count;i++)
|
||||
if(bl_list[i]->prev) // 有?かどうかチェック
|
||||
returnCount += func(bl_list[i],ap);
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, type);
|
||||
returnCount += func(bl_list[i], ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
map_freeblock_unlock(); // 解放を許可する
|
||||
|
||||
va_end(ap);
|
||||
bl_list_count = blockcount;
|
||||
return returnCount;
|
||||
}
|
||||
@ -1210,9 +1220,6 @@ void map_foreachobject(int (*func)(struct block_list*,va_list),int type,...)
|
||||
{
|
||||
int i;
|
||||
int blockcount=bl_list_count;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap,type);
|
||||
|
||||
for(i=2;i<=last_object_id;i++){
|
||||
if(objects[i]){
|
||||
@ -1230,11 +1237,15 @@ void map_foreachobject(int (*func)(struct block_list*,va_list),int type,...)
|
||||
|
||||
for(i=blockcount;i<bl_list_count;i++)
|
||||
if( bl_list[i]->prev || bl_list[i]->next )
|
||||
func(bl_list[i],ap);
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, type);
|
||||
func(bl_list[i], ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
map_freeblock_unlock();
|
||||
|
||||
va_end(ap);
|
||||
bl_list_count = blockcount;
|
||||
}
|
||||
|
||||
@ -3271,7 +3282,7 @@ int cleanup_sub(struct block_list *bl, va_list ap)
|
||||
|
||||
static int cleanup_db_sub(DBKey key,void *data,va_list va)
|
||||
{
|
||||
return cleanup_sub((struct block_list*)data, NULL);
|
||||
return cleanup_sub((struct block_list*)data, va);
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
|
@ -697,7 +697,6 @@ int mob_linksearch(struct block_list *bl,va_list ap)
|
||||
unsigned int tick;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
md=(struct mob_data *)bl;
|
||||
class_ = va_arg(ap, int);
|
||||
target = va_arg(ap, struct block_list *);
|
||||
@ -898,7 +897,6 @@ static int mob_ai_sub_hard_activesearch(struct block_list *bl,va_list ap)
|
||||
int dist;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
md=va_arg(ap,struct mob_data *);
|
||||
target= va_arg(ap,struct block_list**);
|
||||
|
||||
@ -946,7 +944,6 @@ static int mob_ai_sub_hard_changechase(struct block_list *bl,va_list ap)
|
||||
struct block_list **target;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
md=va_arg(ap,struct mob_data *);
|
||||
target= va_arg(ap,struct block_list**);
|
||||
|
||||
@ -1708,7 +1705,6 @@ int mob_deleteslave_sub(struct block_list *bl,va_list ap)
|
||||
int id;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, md = (struct mob_data *)bl);
|
||||
|
||||
id=va_arg(ap,int);
|
||||
@ -2771,7 +2767,6 @@ int mob_getfriendstatus_sub(struct block_list *bl,va_list ap)
|
||||
int flag=0;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, md=(struct mob_data *)bl);
|
||||
nullpo_retr(0, mmd=va_arg(ap,struct mob_data *));
|
||||
|
||||
|
@ -92,7 +92,6 @@ int npc_enable_sub(struct block_list *bl, va_list ap)
|
||||
struct npc_data *nd;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, nd=va_arg(ap,struct npc_data *));
|
||||
if(bl->type == BL_PC && (sd=(struct map_session_data *)bl))
|
||||
{
|
||||
@ -232,7 +231,6 @@ int npc_event_doall_sub(DBKey key, void* data, va_list ap)
|
||||
int rid;
|
||||
|
||||
nullpo_retr(0, ev = (struct event_data *)data);
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, c = va_arg(ap, int *));
|
||||
nullpo_retr(0, name = va_arg(ap, const char *));
|
||||
rid = va_arg(ap, int);
|
||||
@ -258,7 +256,6 @@ static int npc_event_do_sub(DBKey key, void* data, va_list ap)
|
||||
const char* name;
|
||||
|
||||
nullpo_retr(0, ev = (struct event_data *)data);
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, c = va_arg(ap, int *));
|
||||
nullpo_retr(0, name = va_arg(ap, const char *));
|
||||
|
||||
@ -1795,7 +1792,6 @@ int npc_convertlabel_db(DBKey key, void* data, va_list ap)
|
||||
const char *p;
|
||||
int len;
|
||||
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, label_list = va_arg(ap,struct npc_label_list**));
|
||||
nullpo_retr(0, label_list_num = va_arg(ap,int*));
|
||||
nullpo_retr(0, filepath = va_arg(ap,const char*));
|
||||
|
@ -929,7 +929,6 @@ int party_sub_count(struct block_list *bl, va_list ap)
|
||||
int party_foreachsamemap(int (*func)(struct block_list*,va_list),struct map_session_data *sd,int range,...)
|
||||
{
|
||||
struct party_data *p;
|
||||
va_list ap;
|
||||
int i;
|
||||
int x0,y0,x1,y1;
|
||||
struct block_list *list[MAX_PARTY];
|
||||
@ -946,8 +945,6 @@ int party_foreachsamemap(int (*func)(struct block_list*,va_list),struct map_sess
|
||||
x1=sd->bl.x+range;
|
||||
y1=sd->bl.y+range;
|
||||
|
||||
va_start(ap,range);
|
||||
|
||||
for(i=0;i<MAX_PARTY;i++)
|
||||
{
|
||||
struct map_session_data *psd = p->data[i].sd;
|
||||
@ -964,10 +961,14 @@ int party_foreachsamemap(int (*func)(struct block_list*,va_list),struct map_sess
|
||||
map_freeblock_lock();
|
||||
|
||||
for(i=0;i<blockcount;i++)
|
||||
total += func(list[i],ap);
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, range);
|
||||
total += func(list[i], ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
map_freeblock_unlock();
|
||||
|
||||
va_end(ap);
|
||||
return total;
|
||||
}
|
||||
|
@ -1801,7 +1801,6 @@ int skill_area_sub (struct block_list *bl, va_list ap)
|
||||
SkillFunc func;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
|
||||
src=va_arg(ap,struct block_list *);
|
||||
skill_id=va_arg(ap,int);
|
||||
@ -7569,7 +7568,6 @@ static int skill_check_condition_char_sub (struct block_list *bl, va_list ap)
|
||||
int *p_sd; //Contains the list of characters found.
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, tsd=(struct map_session_data*)bl);
|
||||
nullpo_retr(0, src=va_arg(ap,struct block_list *));
|
||||
nullpo_retr(0, sd=(struct map_session_data*)src);
|
||||
@ -9025,7 +9023,6 @@ int skill_frostjoke_scream (struct block_list *bl, va_list ap)
|
||||
unsigned int tick;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, src=va_arg(ap,struct block_list*));
|
||||
|
||||
skillnum=va_arg(ap,int);
|
||||
@ -9189,7 +9186,6 @@ int skill_greed (struct block_list *bl, va_list ap)
|
||||
struct flooritem_data *fitem=NULL;
|
||||
|
||||
nullpo_retr(0, bl);
|
||||
nullpo_retr(0, ap);
|
||||
nullpo_retr(0, src = va_arg(ap, struct block_list *));
|
||||
|
||||
if(src->type == BL_PC && (sd=(struct map_session_data *)src) && bl->type==BL_ITEM && (fitem=(struct flooritem_data *)bl))
|
||||
|
Loading…
x
Reference in New Issue
Block a user