lua/uloop: make get_sock_fd capable of absolute addresses
authorKarl Palsson <karlp@etactica.com>
Tue, 30 Jun 2020 10:38:42 +0000 (10:38 +0000)
committerPetr Štetiar <ynezz@true.cz>
Sat, 11 Jul 2020 09:15:12 +0000 (11:15 +0200)
The original code required the use of relative addresses into the lua
stack.  It should accept either.

Signed-off-by: Karl Palsson <karlp@etactica.com>
lua/uloop.c

index fcbe274970855942d59d1851e423159ffe4b915a..394970d74426006f81892a072be75d71cf0c3346 100644 (file)
@@ -188,7 +188,8 @@ static int get_sock_fd(lua_State* L, int idx) {
                lua_getfield(L, idx, "getfd");
                if(lua_isnil(L, -1))
                        return luaL_error(L, "socket type missing 'getfd' method");
-               lua_pushvalue(L, idx - 1);
+               /* if we have absolute, no need to adjust for getfield() call */
+               lua_pushvalue(L, idx > 0 ? idx: idx - 1);
                lua_call(L, 1, 1);
                fd = lua_tointeger(L, -1);
                lua_pop(L, 1);