[Tarantool-patches] [PATCH 1.10 9/9] module api: luaL_cdata_iscallable

Timur Safin tsafin at tarantool.org
Fri Sep 25 00:00:41 MSK 2020


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
  * <lua_newthread> call underneath succeeds, the created Lua state
-- 
2.20.1



More information about the Tarantool-patches mailing list