- Fixed NPC instance variables not being passed through to callfunc; or callsub; stacks properly (bugreport:5673)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16018 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
epoque11 2012-04-30 12:50:56 +00:00
parent 7c77d43217
commit 8d89bc7c83

View File

@ -2934,6 +2934,8 @@ void pop_stack(struct script_state* st, int start, int end)
struct script_retinfo* ri = data->u.ri; struct script_retinfo* ri = data->u.ri;
if( ri->var_function ) if( ri->var_function )
script_free_vars(ri->var_function); script_free_vars(ri->var_function);
if( data->ref )
aFree(data->ref);
aFree(ri); aFree(ri);
} }
data->type = C_NOP; data->type = C_NOP;
@ -4467,8 +4469,10 @@ BUILDIN_FUNC(callfunc)
if( data_isreference(data) && !data->ref ) if( data_isreference(data) && !data->ref )
{ {
const char* name = reference_getname(data); const char* name = reference_getname(data);
if( name[0] == '.' && name[1] == '@' ) if( name[0] == '.' && name[1] == '@' ) {
data->ref = &st->stack->var_function; data->ref = (struct DBMap**)aCalloc(sizeof(struct DBMap*), 1);
data->ref[0] = st->stack->var_function;
}
else if( name[0] == '.' ) else if( name[0] == '.' )
data->ref = &st->script->script_vars; data->ref = &st->script->script_vars;
} }
@ -4513,8 +4517,10 @@ BUILDIN_FUNC(callsub)
if( data_isreference(data) && !data->ref ) if( data_isreference(data) && !data->ref )
{ {
const char* name = reference_getname(data); const char* name = reference_getname(data);
if( name[0] == '.' && name[1] == '@' ) if( name[0] == '.' && name[1] == '@' ) {
data->ref = &st->stack->var_function; data->ref = (struct DBMap**)aCalloc(sizeof(struct DBMap*), 1);
data->ref[0] = st->stack->var_function;
}
} }
} }