summaryrefslogtreecommitdiff
path: root/lua.go
diff options
context:
space:
mode:
Diffstat (limited to 'lua.go')
-rw-r--r--lua.go18
1 files changed, 18 insertions, 0 deletions
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))
+ }
+}