From e3f656e1115d731c6b3fb0a6f5a645e93e588bc3 Mon Sep 17 00:00:00 2001 From: Lance Date: Sun, 21 May 2006 08:09:20 +0000 Subject: * Speed up array size calculation and deletion. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6676 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/script.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/map/script.c b/src/map/script.c index 318ac4345..4e184f322 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -3424,12 +3424,17 @@ int buildin_copyarray(struct script_state *st) */ static int getarraysize(struct script_state *st,int num,int postfix) { - int i=(num>>24),c=-1; // Moded to -1 because even if the first element is 0, it will still report as 1 [Lance] - for(;i<128;i++){ - // num must be the first elements of array [Eoe / jA 1127] - void *v=get_val2(st,(num & 0x00FFFFFF)+(i<<24)); - if(postfix=='$' && *((char*)v) ) c=i; - if(postfix!='$' && (int)v )c=i; + int i=(num>>24),c=(i==0? -1:i); // Moded to -1 because even if the first element is 0, it will still report as 1 [Lance] + if(postfix == '$'){ + for(;i<128;i++){ + void *v=get_val2(st,(num & 0x00FFFFFF)+(i<<24)); + if(*((char*)v)) c=i; + } + }else{ + for(;i<128;i++){ + void *v=get_val2(st,(num & 0x00FFFFFF)+(i<<24)); + if((int)v) c=i; + } } return c+1; } @@ -3476,9 +3481,13 @@ int buildin_deletearray(struct script_state *st) for(i=0;i>24));i++){ - if( postfix!='$' ) set_reg(sd,num+(i<<24),name, 0); - if( postfix=='$' ) set_reg(sd,num+(i<<24),name, (void *) ""); + + if(postfix != '$'){ + for(;i<(128-(num>>24));i++) + set_reg(sd,num+(i<<24),name, 0); + } else { + for(;i<(128-(num>>24));i++) + set_reg(sd,num+(i<<24),name, (void *) ""); } return 0; } -- cgit v1.2.3-70-g09d2