lua Fix potential event stack OVFL
you could return values in the event callbacks that would never be processed this would eventually cause a lua stack overflow settop(0) eats all return values (if any) Change-Id: Icac6b27e592b385421275d4bd899ed3fe1065669
This commit is contained in:
parent
2f278af760
commit
4c3937591c
1 changed files with 3 additions and 1 deletions
|
@ -253,7 +253,9 @@ static int lua_rev_callback(lua_State *L, struct cb_data *evt)
|
||||||
lua_pushlightuserdata(L, evt->data);
|
lua_pushlightuserdata(L, evt->data);
|
||||||
|
|
||||||
lua_status = lua_resume(L, 2); /* call the saved function */
|
lua_status = lua_resume(L, 2); /* call the saved function */
|
||||||
if (lua_status == LUA_YIELD) /* coroutine.yield() disallowed */
|
if (lua_status == LUA_SUCCESS)
|
||||||
|
lua_settop(L, 0); /* eat any value(s) returned */
|
||||||
|
else if (lua_status == LUA_YIELD) /* coroutine.yield() disallowed */
|
||||||
luaL_where(L, 1); /* push error string on stack */
|
luaL_where(L, 1); /* push error string on stack */
|
||||||
|
|
||||||
return lua_status;
|
return lua_status;
|
||||||
|
|
Loading…
Reference in a new issue