lua/uloop: fd_add() better args checking

Actually check for flags being valid, instead of simply ignoring the
call if flags was zero.

Use standard lua checks for the function argument, so you can get a
normal "argument #2 was invalid, expected function, got xxx" instead of
the vague, "invalid arg list"

Signed-off-by: Karl Palsson <karlp@etactica.com>
This commit is contained in:
Karl Palsson 2020-06-30 10:38:41 +00:00 committed by Petr Štetiar
parent e85cb73976
commit 161c25960b

View file

@ -232,17 +232,14 @@ static int ul_ufd_add(lua_State *L)
int ref; int ref;
int fd_ref; int fd_ref;
if (lua_isnumber(L, -1)) { flags = luaL_checkinteger(L, -1);
flags = lua_tointeger(L, -1); if (!flags) {
lua_pop(L, 1); lua_pushstring(L, "flags cannot be zero");
}
if (!lua_isfunction(L, -1)) {
lua_pushstring(L, "invalid arg list");
lua_error(L); lua_error(L);
return 0;
} }
lua_pop(L, 1);
luaL_checktype(L, -1, LUA_TFUNCTION);
fd = get_sock_fd(L, -2); fd = get_sock_fd(L, -2);
@ -261,8 +258,7 @@ static int ul_ufd_add(lua_State *L)
ufd->fd.fd = fd; ufd->fd.fd = fd;
ufd->fd_r = fd_ref; ufd->fd_r = fd_ref;
ufd->fd.cb = ul_ufd_cb; ufd->fd.cb = ul_ufd_cb;
if (flags) uloop_fd_add(&ufd->fd, flags);
uloop_fd_add(&ufd->fd, flags);
return 1; return 1;
} }