diff options
-rw-r--r-- | upb/bindings/lua/def.c | 1 | ||||
-rw-r--r-- | upb/bindings/lua/msg.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/upb/bindings/lua/def.c b/upb/bindings/lua/def.c index c2df140..638abb6 100644 --- a/upb/bindings/lua/def.c +++ b/upb/bindings/lua/def.c @@ -720,6 +720,7 @@ static const struct luaL_Reg lupb_oneofdef_m[] = { }; static const struct luaL_Reg lupb_oneofdef_mm[] = { + {"__gc", lupb_refcounted_gc}, {"__len", lupb_oneofdef_len}, {NULL, NULL} }; diff --git a/upb/bindings/lua/msg.c b/upb/bindings/lua/msg.c index e7c3f2e..d77c429 100644 --- a/upb/bindings/lua/msg.c +++ b/upb/bindings/lua/msg.c @@ -950,6 +950,12 @@ int lupb_msg_pushref(lua_State *L, int msgclass, void *msg) { return 1; } +static int lupb_msg_gc(lua_State *L) { + lupb_msg *lmsg = lupb_msg_check(L, 1); + upb_msg_uninit(lmsg->msg, lmsg->lmsgclass->layout); + return 0; +} + /* lupb_msg Public API */ /** @@ -1053,6 +1059,7 @@ static int lupb_msg_newindex(lua_State *L) { } static const struct luaL_Reg lupb_msg_mm[] = { + {"__gc", lupb_msg_gc}, {"__index", lupb_msg_index}, {"__newindex", lupb_msg_newindex}, {NULL, NULL} |