Fixed bug causing parameter conflict in statements like func(array[idx], func2(blah))

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3043 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2008-10-13 09:17:47 +00:00
parent 600f27876c
commit 0629d013b5

View file

@ -2867,7 +2867,7 @@ QCC_def_t *QCC_PR_ParseFunctionCall (QCC_def_t *func) //warning, the func could
} }
if (strchr(func->name, ':') && laststatement && statements[laststatement-1].op == OP_LOAD_FNC && statements[laststatement-1].c == func->ofs) if (strchr(func->name, ':') && laststatement && statements[laststatement-1].op == OP_LOAD_FNC && statements[laststatement-1].c == func->ofs)
{ //we're entering C++ code with a different self. { //we're entering OO code with a different self.
//FIXME: problems could occur with hexen2 calling conventions when parm0/1 is 'self' //FIXME: problems could occur with hexen2 calling conventions when parm0/1 is 'self'
//thiscall. copy the right ent into 'self' (if it's not the same offset) //thiscall. copy the right ent into 'self' (if it's not the same offset)
@ -3620,6 +3620,7 @@ reloop:
qcc_usefulstatement = true; qcc_usefulstatement = true;
nd = &def_ret; nd = &def_ret;
def_ret.temp->used = true;
d=nd; d=nd;
d->type = newtype; d->type = newtype;
return d; return d;
@ -3695,6 +3696,7 @@ reloop:
} }
nd = &def_ret; nd = &def_ret;
def_ret.temp->used = true;
d=nd; d=nd;
d->type = newtype; d->type = newtype;
return d; return d;