From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp15.mail.ru (smtp15.mail.ru [94.100.176.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 26F5044643C for ; Fri, 25 Sep 2020 00:01:21 +0300 (MSK) From: Timur Safin Date: Fri, 25 Sep 2020 00:00:41 +0300 Message-Id: <7a281d063f0fd1297c7a8240036c150d1b4940c0.1600955796.git.tsafin@tarantool.org> In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH 1.10 9/9] module api: luaL_cdata_iscallable List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: v.shpilevoy@tarantool.org, alexander.turenko@tarantool.org Cc: tarantool-patches@dev.tarantool.org In addition to `luaL_iscallable` we need `luaL_cdata_iscallable` because code which was calling it directly had to be copied to merger side for 1.10, as there was missing support dislike 2.* Backported to 1.10 Part of #5273 --- extra/exports | 1 + src/lua/utils.c | 2 +- src/lua/utils.h | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/extra/exports b/extra/exports index a593375c0..e8fddd43c 100644 --- a/extra/exports +++ b/extra/exports @@ -119,6 +119,7 @@ coio_getaddrinfo luaL_pushcdata luaL_iscdata luaL_iscallable +luaL_cdata_iscallable luaL_checkcdata luaL_checkconstchar luaL_checkibuf diff --git a/src/lua/utils.c b/src/lua/utils.c index 8aa2deb13..bfc9f2852 100644 --- a/src/lua/utils.c +++ b/src/lua/utils.c @@ -1058,7 +1058,7 @@ luaL_checkconstchar(struct lua_State *L, int idx, const char **res, } /* Based on ffi_meta___call() from luajit/src/lib_ffi.c. */ -static int +int luaL_cdata_iscallable(lua_State *L, int idx) { /* Calculate absolute value in the stack. */ diff --git a/src/lua/utils.h b/src/lua/utils.h index dca23c299..136ce64f9 100644 --- a/src/lua/utils.h +++ b/src/lua/utils.h @@ -517,6 +517,13 @@ luaT_tolstring(lua_State *L, int idx, size_t *ssize); LUA_API int luaL_iscallable(lua_State *L, int idx); +/** + * Check whether a Lua object is a cdata metatype with a __call field. + * + */ +LUA_API int +luaL_cdata_iscallable(lua_State *L, int idx); + /** * @brief Creates a new Lua coroutine in a protected frame. If * call underneath succeeds, the created Lua state -- 2.20.1