Skip to content

Commit 0f76b3b

Browse files
committed
Switch to mlua-rs/luau
1 parent 1893643 commit 0f76b3b

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

luau/VM/include/lua.h

+7-3
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ typedef int (*lua_Continuation)(lua_State* L, int status);
5454

5555
typedef void* (*lua_Alloc)(void* ud, void* ptr, size_t osize, size_t nsize);
5656

57+
/*
58+
** prototype for userdata destructor
59+
*/
60+
61+
typedef void (*lua_Destructor)(lua_State* L, void* userdata);
62+
5763
// non-return type
5864
#define l_noret void LUA_NORETURN
5965

@@ -191,7 +197,7 @@ LUA_API int lua_pushthread(lua_State* L);
191197
LUA_API void lua_pushlightuserdatatagged(lua_State* L, void* p, int tag);
192198
LUA_API void* lua_newuserdatatagged(lua_State* L, size_t sz, int tag);
193199
LUA_API void* lua_newuserdatataggedwithmetatable(lua_State* L, size_t sz, int tag); // metatable fetched with lua_getuserdatametatable
194-
LUA_API void* lua_newuserdatadtor(lua_State* L, size_t sz, void (*dtor)(void*));
200+
LUA_API void* lua_newuserdatadtor(lua_State* L, size_t sz, lua_Destructor dtor);
195201

196202
LUA_API void* lua_newbuffer(lua_State* L, size_t sz);
197203

@@ -321,8 +327,6 @@ LUA_API double lua_clock();
321327

322328
LUA_API void lua_setuserdatatag(lua_State* L, int idx, int tag);
323329

324-
typedef void (*lua_Destructor)(lua_State* L, void* userdata);
325-
326330
LUA_API void lua_setuserdatadtor(lua_State* L, int tag, lua_Destructor dtor);
327331
LUA_API lua_Destructor lua_getuserdatadtor(lua_State* L, int tag);
328332

luau/VM/src/lapi.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1326,7 +1326,7 @@ void* lua_newuserdatataggedwithmetatable(lua_State* L, size_t sz, int tag)
13261326
return u->data;
13271327
}
13281328

1329-
void* lua_newuserdatadtor(lua_State* L, size_t sz, void (*dtor)(void*))
1329+
void* lua_newuserdatadtor(lua_State* L, size_t sz, lua_Destructor dtor)
13301330
{
13311331
luaC_checkGC(L);
13321332
luaC_threadbarrier(L);

luau/VM/src/ludata.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ void luaU_freeudata(lua_State* L, Udata* u, lua_Page* page)
3232
}
3333
else if (u->tag == UTAG_IDTOR)
3434
{
35-
void (*dtor)(void*) = nullptr;
35+
lua_Destructor dtor = nullptr;
3636
memcpy(&dtor, &u->data + u->len - sizeof(dtor), sizeof(dtor));
3737
if (dtor)
38-
dtor(u->data);
38+
dtor(L, u->data);
3939
}
4040

4141

0 commit comments

Comments
 (0)