summaryrefslogtreecommitdiff
path: root/src/map/script.c
diff options
context:
space:
mode:
authorLance <Lance@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-05-21 08:09:20 +0000
committerLance <Lance@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-05-21 08:09:20 +0000
commite3f656e1115d731c6b3fb0a6f5a645e93e588bc3 (patch)
treec185649e8ea974e5eb4525560633d0167f9e671c /src/map/script.c
parentca715304f24e1177ab2fd17a761d5f9581ac08e5 (diff)
downloadhercules-e3f656e1115d731c6b3fb0a6f5a645e93e588bc3.tar.gz
hercules-e3f656e1115d731c6b3fb0a6f5a645e93e588bc3.tar.bz2
hercules-e3f656e1115d731c6b3fb0a6f5a645e93e588bc3.tar.xz
hercules-e3f656e1115d731c6b3fb0a6f5a645e93e588bc3.zip
* Speed up array size calculation and deletion.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6676 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/script.c')
-rw-r--r--src/map/script.c27
1 files changed, 18 insertions, 9 deletions
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<sz;i++){
set_reg(sd,num+(i<<24),name, get_val2(st,num+((i+count)<<24) ) );
}
- for(;i<(128-(num>>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;
}