- fixed: DLevelScript always initialized the first 3 local variables, even if less were allocated.

SVN r3101 (trunk)
This commit is contained in:
Christoph Oelckers 2011-01-14 09:07:00 +00:00
parent 789c937635
commit 7db7886a0e
1 changed files with 13 additions and 3 deletions

View File

@ -1964,6 +1964,7 @@ DLevelScript::~DLevelScript ()
{
if (localvars != NULL)
delete[] localvars;
localvars = NULL;
}
void DLevelScript::Unlink ()
@ -6725,9 +6726,18 @@ DLevelScript::DLevelScript (AActor *who, line_t *where, int num, const ScriptPtr
script = num;
numlocalvars = code->VarCount;
localvars = new SDWORD[code->VarCount];
localvars[0] = arg0;
localvars[1] = arg1;
localvars[2] = arg2;
if (code->VarCount > 0)
{
localvars[0] = arg0;
if (code->VarCount > 1)
{
localvars[1] = arg1;
if (code->VarCount > 2)
{
localvars[2] = arg2;
}
}
}
memset (localvars+code->ArgCount, 0, (code->VarCount-code->ArgCount)*sizeof(SDWORD));
pc = module->GetScriptAddress (code);
activator = who;