- fixed: CallStateChain must never allow a jumping function to set the chain's overall result to successful.

This commit is contained in:
Christoph Oelckers 2016-03-04 15:11:20 +01:00
parent b427f27e3b
commit caf2ca0df7
2 changed files with 2 additions and 1 deletions

View file

@ -146,6 +146,7 @@ bool ACustomInventory::CallStateChain (AActor *actor, FState *state)
if (proto->ReturnTypes[0] == TypeState)
{ // Function returns a state
wantret = &ret[0];
retval = false; // this is a jump function which never affects the success state.
}
else if (proto->ReturnTypes[0] == TypeSInt32 || proto->ReturnTypes[0] == TypeBool)
{ // Function returns an int or bool

View file

@ -3220,7 +3220,7 @@ FxExpression *FxActionSpecialCall::Resolve(FCompileContext& ctx)
int DecoCallLineSpecial(VMFrameStack *stack, VMValue *param, int numparam, VMReturn *ret, int numret)
{
assert(numparam > 2 && numparam < 7);
assert(numparam > 2 && numparam < 8);
assert(numret == 1);
assert(param[0].Type == REGT_INT);
assert(param[1].Type == REGT_POINTER);