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