* [Optimized]:

- buildin_npcshopitem memory allocation to calculate before reallocating.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7105 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
Lance
2006-06-12 16:18:08 +00:00
parent c4d4161032
commit c165ff1eb6
2 changed files with 10 additions and 5 deletions

View File

@@ -10119,7 +10119,7 @@ int buildin_npcshopitem(struct script_state *st)
struct npc_data *nd= NULL;
int n = 0;
int i = 3;
int itemid, value;
int itemid, value, amount;
char* npcname = conv_str(st, & (st->stack->stack_data[st->start + 2]));
nd = npc_name2id(npcname);
@@ -10129,11 +10129,13 @@ int buildin_npcshopitem(struct script_state *st)
#endif
if(nd && nd->bl.subtype==SHOP){
amount = (st->end-2)/2;
// st->end - 2 = nameid + value # ... / 2 = number of items ... + 1 just in case
nd = (struct npc_data *)aRealloc(nd,sizeof(struct npc_data) +
sizeof(nd->u.shop_item[0]) * (MAX_SHOPITEM + 1));
sizeof(nd->u.shop_item[0]) * amount);
// Reset sell list.
for(;nd->u.shop_item[n].nameid && n < MAX_SHOPITEM; n++){
for(;nd->u.shop_item[n].nameid && n < amount; n++){
nd->u.shop_item[n].nameid = 0;
nd->u.shop_item[n].value = 0;
}
@@ -10150,8 +10152,8 @@ int buildin_npcshopitem(struct script_state *st)
n++;
}
nd = (struct npc_data *)aRealloc(nd,sizeof(struct npc_data) +
sizeof(nd->u.shop_item[0]) * n);
//nd = (struct npc_data *)aRealloc(nd,sizeof(struct npc_data) +
// sizeof(nd->u.shop_item[0]) * n);
map_addiddb(&nd->bl);