diff options
author | Karl Palsson <karlp@etactica.com> | 2020-06-30 13:38:41 +0300 |
---|---|---|
committer | Petr Štetiar <ynezz@true.cz> | 2020-07-11 12:15:12 +0300 |
commit | 161c25960ba23e46ff960e84f25055f94758b909 (patch) | |
tree | 1fd1ac2f15d9fdda1ca682f8fbec780a36b7765a /lua | |
parent | e85cb739766d00977a08cce98f161976da5fbefc (diff) |
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>
Diffstat (limited to 'lua')
-rw-r--r-- | lua/uloop.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/lua/uloop.c b/lua/uloop.c index 1b0389f..fcbe274 100644 --- a/lua/uloop.c +++ b/lua/uloop.c @@ -232,17 +232,14 @@ static int ul_ufd_add(lua_State *L) int ref; int fd_ref; - if (lua_isnumber(L, -1)) { - flags = lua_tointeger(L, -1); - lua_pop(L, 1); - } - - if (!lua_isfunction(L, -1)) { - lua_pushstring(L, "invalid arg list"); + flags = luaL_checkinteger(L, -1); + if (!flags) { + lua_pushstring(L, "flags cannot be zero"); lua_error(L); - - return 0; } + lua_pop(L, 1); + + luaL_checktype(L, -1, LUA_TFUNCTION); fd = get_sock_fd(L, -2); @@ -261,8 +258,7 @@ static int ul_ufd_add(lua_State *L) ufd->fd.fd = fd; ufd->fd_r = fd_ref; ufd->fd.cb = ul_ufd_cb; - if (flags) - uloop_fd_add(&ufd->fd, flags); + uloop_fd_add(&ufd->fd, flags); return 1; } |