From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <tsafin@tarantool.org>
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 <tarantool-patches@dev.tarantool.org>;
 Fri, 25 Sep 2020 00:01:21 +0300 (MSK)
From: Timur Safin <tsafin@tarantool.org>
Date: Fri, 25 Sep 2020 00:00:41 +0300
Message-Id: <7a281d063f0fd1297c7a8240036c150d1b4940c0.1600955796.git.tsafin@tarantool.org>
In-Reply-To: <cover.1600955796.git.tsafin@tarantool.org>
References: <cover.1600955796.git.tsafin@tarantool.org>
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 <tarantool-patches.dev.tarantool.org>
List-Unsubscribe: <https://lists.tarantool.org/mailman/options/tarantool-patches>, 
 <mailto:tarantool-patches-request@dev.tarantool.org?subject=unsubscribe>
List-Archive: <https://lists.tarantool.org/pipermail/tarantool-patches/>
List-Post: <mailto:tarantool-patches@dev.tarantool.org>
List-Help: <mailto:tarantool-patches-request@dev.tarantool.org?subject=help>
List-Subscribe: <https://lists.tarantool.org/mailman/listinfo/tarantool-patches>, 
 <mailto:tarantool-patches-request@dev.tarantool.org?subject=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
  * <lua_newthread> call underneath succeeds, the created Lua state
-- 
2.20.1