lua-timer: explicitly restore Lua stack across callbacks.
authorKrisztian Litkey <krisztian.litkey@intel.com>
Tue, 28 Oct 2014 12:48:34 +0000 (14:48 +0200)
committerKrisztian Litkey <krisztian.litkey@intel.com>
Tue, 28 Oct 2014 12:56:23 +0000 (14:56 +0200)
src/core/lua-bindings/lua-timer.c

index 0fa5b4d..eb87494 100644 (file)
@@ -107,9 +107,12 @@ static void timer_lua_cb(mrp_timer_t *timer, void *user_data)
 {
     timer_lua_t *t   = (timer_lua_t *)user_data;
     int          one = t->oneshot;
+    int          top;
 
     MRP_UNUSED(timer);
 
+    top = lua_gettop(t->L);
+
     if (mrp_lua_object_deref_value(t, t->L, t->callback, false)) {
         mrp_lua_push_object(t->L, t);
 
@@ -124,6 +127,8 @@ static void timer_lua_cb(mrp_timer_t *timer, void *user_data)
         mrp_del_timer(t->t);
         t->t = NULL;
     }
+
+    lua_settop(t->L, top);
 }