From 6aa6a3d6c01ef890974ac570766cf8c07af221d2 Mon Sep 17 00:00:00 2001
From: Vladimir Davydov <vdavydov@tarantool.org>
Date: Fri, 29 Apr 2022 16:51:19 +0300
Subject: [PATCH] box: replace CTID_STRUCT_ITERATOR_REF with
 CTID_STRUCT_ITERATOR_PTR

In Lua C code 'struct iterator&' and 'struct iterator*' are handled in
exactly the same way. However, if we create an iterator object in Lua by
calling box_index_iterator via FFI, and pass the object to Lua C, it
will have 'struct iterator*' type, not 'struct iterator&'. In the next
patch we need Lua C functions to work with such objects so let's replace
'struct iterator&' with 'struct iterator*' in C code.

NO_DOC=refactoring
NO_TEST=refactoring
NO_CHANGELOG=refactoring
---
 src/box/lua/index.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/box/lua/index.c b/src/box/lua/index.c
index 4cf3c4d68a..a2c681c5f4 100644
--- a/src/box/lua/index.c
+++ b/src/box/lua/index.c
@@ -40,7 +40,7 @@
 /** {{{ box.index Lua library: access to spaces and indexes
  */
 
-static int CTID_STRUCT_ITERATOR_REF = 0;
+static uint32_t CTID_STRUCT_ITERATOR_PTR = 0;
 
 static int
 lbox_insert(lua_State *L)
@@ -257,9 +257,9 @@ lbox_index_iterator(lua_State *L)
 	if (it == NULL)
 		return luaT_error(L);
 
-	assert(CTID_STRUCT_ITERATOR_REF != 0);
+	assert(CTID_STRUCT_ITERATOR_PTR != 0);
 	struct iterator **ptr = (struct iterator **) luaL_pushcdata(L,
-		CTID_STRUCT_ITERATOR_REF);
+		CTID_STRUCT_ITERATOR_PTR);
 	*ptr = it; /* NULL handled by Lua, gc also set by Lua */
 	return 1;
 }
@@ -271,10 +271,10 @@ lbox_iterator_next(lua_State *L)
 	if (lua_gettop(L) < 1 || lua_type(L, 1) != LUA_TCDATA)
 		return luaL_error(L, "usage: next(state)");
 
-	assert(CTID_STRUCT_ITERATOR_REF != 0);
+	assert(CTID_STRUCT_ITERATOR_PTR != 0);
 	uint32_t ctypeid;
 	void *data = luaL_checkcdata(L, 1, &ctypeid);
-	if (ctypeid != (uint32_t) CTID_STRUCT_ITERATOR_REF)
+	if (ctypeid != CTID_STRUCT_ITERATOR_PTR)
 		return luaL_error(L, "usage: next(state)");
 
 	struct iterator *itr = *(struct iterator **) data;
@@ -337,8 +337,8 @@ box_lua_index_init(struct lua_State *L)
 	int rc = luaL_cdef(L, "struct iterator;");
 	assert(rc == 0);
 	(void) rc;
-	CTID_STRUCT_ITERATOR_REF = luaL_ctypeid(L, "struct iterator&");
-	assert(CTID_STRUCT_ITERATOR_REF != 0);
+	CTID_STRUCT_ITERATOR_PTR = luaL_ctypeid(L, "struct iterator*");
+	assert(CTID_STRUCT_ITERATOR_PTR != 0);
 
 	static const struct luaL_Reg indexlib [] = {
 		{NULL, NULL}
-- 
GitLab