如何处理由 lua_resume 返回的返回数?

我有一些协程处理代码,如下:

int coro_re_num = 0;
int coro_state = lua_resume( coro_lua, master_lua, narg, &coro_re_num);

if ( coro_state == LUA_OK)
{
    // 做些什么
}
else if ( coro_state == LUA_YIELD)
{
    // 做些什么
}
else
{
    const char* err = lua_tostring(coro_lua, -1);
    log_error(err);
}

lua_pop(master_lua, coro_re_num);

当协程以OKYIELD结束时,它可以正常工作。但是当它以任何错误结束时,最后的lua_pop总是失败的,并且我注意到coro_re_num相对较大(大多数情况下超过10),这导致lua_pop下溢。

当协程以错误结束时,coro_re_num是什么意思?如何处理它?

点赞