static cell_t sm_CallFinish(IPluginContext *pContext, const cell_t *params) { int err = SP_ERROR_NOT_RUNNABLE; cell_t *result; if (!s_CallStarted) { return pContext->ThrowNativeError("Cannot finish call when there is no call in progress"); } pContext->LocalToPhysAddr(params[1], &result); if (s_pFunction) { IPluginFunction *pFunction = s_pFunction; ResetCall(); err = pFunction->Execute(result); } else if (s_pForward) { IForward *pForward = s_pForward; ResetCall(); err = pForward->Execute(result, NULL); } return err; }