From ecec880f946c3ff4cbad79223f6941e16e8f19c0 Mon Sep 17 00:00:00 2001 From: unwox Date: Thu, 13 Jun 2024 13:09:24 +0600 Subject: add RestoreStackFunc method for preventing stack leaks --- lua.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'lua.go') diff --git a/lua.go b/lua.go index 874dac8..9e7b6ec 100644 --- a/lua.go +++ b/lua.go @@ -122,3 +122,21 @@ func (l *Lua) PushTableItem (key string) { C.lua_pushstring(l.l, ckey); C.lua_gettable(l.l, -2); } + +func (l *Lua) RestoreStackFunc() func () { + before := l.StackLen() + return func () { + after := l.StackLen() + diff := after - before + if diff == 0 { + return + } else if diff < 0 { + log.Fatalf( + "too many stack pops: len before: %d, after: %d\n", + before, + after, + ) + } + C.lua_settop(l.l, C.int(before)) + } +} -- cgit v1.2.3