* Speed up array size calculation and deletion.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6676 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
741f06722c
commit
3fbb543cfc
@ -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.
|
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||||
|
|
||||||
2006/05/19
|
2006/05/19
|
||||||
|
* Speed up array size calculation and deletion. [Lance]
|
||||||
* Player must learn the skill before doing auto-spell [Lance]
|
* Player must learn the skill before doing auto-spell [Lance]
|
||||||
* Exploit prevention in clif_parse_NpcStringInput [Lance]
|
* Exploit prevention in clif_parse_NpcStringInput [Lance]
|
||||||
* grfio_final moved back if any of GRF overriding is enabled so servers
|
* grfio_final moved back if any of GRF overriding is enabled so servers
|
||||||
|
13
Dev/bugs.txt
13
Dev/bugs.txt
@ -4,19 +4,6 @@
|
|||||||
"reminder" of big bugs that have not been fixed yet. An good example would
|
"reminder" of big bugs that have not been fixed yet. An good example would
|
||||||
be "the matrix bug" from the good old days.
|
be "the matrix bug" from the good old days.
|
||||||
|
|
||||||
BUG: grf loading is broken.
|
|
||||||
DESC: Specifying multiple grfs is badly broken, as the 'checksum' applied to
|
|
||||||
files usually returns the wrong index, thus looking the file up on the wrong
|
|
||||||
grf file. Users have also reported that reading from the data/ dir is messed
|
|
||||||
up. See link for all details.
|
|
||||||
LINKS:
|
|
||||||
- http://www.eathena.ws/board/index.php?showtopic=78372
|
|
||||||
|
|
||||||
BUG: @reloadscript causes a crash
|
|
||||||
DESC: Do a @reloadscript, and it will inmediately crash on the
|
|
||||||
skill_unit_timer function. Apparently the global objects array gets messed up
|
|
||||||
when cleaning the npcs. Valgrind doesn't seems to point at any particular
|
|
||||||
cause. I suspect it may have to do with NPC shops.
|
|
||||||
|
|
||||||
BUG: mob won't stop moving while casting spell
|
BUG: mob won't stop moving while casting spell
|
||||||
DESC: When mob start casting spell, he still moves some cells (2-3). Also if
|
DESC: When mob start casting spell, he still moves some cells (2-3). Also if
|
||||||
|
@ -3424,12 +3424,17 @@ int buildin_copyarray(struct script_state *st)
|
|||||||
*/
|
*/
|
||||||
static int getarraysize(struct script_state *st,int num,int postfix)
|
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]
|
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]
|
||||||
for(;i<128;i++){
|
if(postfix == '$'){
|
||||||
// num must be the first elements of array [Eoe / jA 1127]
|
for(;i<128;i++){
|
||||||
void *v=get_val2(st,(num & 0x00FFFFFF)+(i<<24));
|
void *v=get_val2(st,(num & 0x00FFFFFF)+(i<<24));
|
||||||
if(postfix=='$' && *((char*)v) ) c=i;
|
if(*((char*)v)) c=i;
|
||||||
if(postfix!='$' && (int)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;
|
return c+1;
|
||||||
}
|
}
|
||||||
@ -3476,9 +3481,13 @@ int buildin_deletearray(struct script_state *st)
|
|||||||
for(i=0;i<sz;i++){
|
for(i=0;i<sz;i++){
|
||||||
set_reg(sd,num+(i<<24),name, get_val2(st,num+((i+count)<<24) ) );
|
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 != '$'){
|
||||||
if( postfix=='$' ) set_reg(sd,num+(i<<24),name, (void *) "");
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user