lua-deferred: 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:19 +0000 (14:56 +0200)
src/core/lua-bindings/lua-deferred.c

index a7e2eba..9e0f3f1 100644 (file)
@@ -105,9 +105,12 @@ static void deferred_lua_cb(mrp_deferred_t *deferred, void *user_data)
 {
     deferred_lua_t *d   = (deferred_lua_t *)user_data;
     int             one = d->oneshot;
+    int             top;
 
     MRP_UNUSED(deferred);
 
+    top = lua_gettop(d->L);
+
     if (mrp_lua_object_deref_value(d, d->L, d->callback, false)) {
         mrp_lua_push_object(d->L, d);
 
@@ -122,6 +125,8 @@ static void deferred_lua_cb(mrp_deferred_t *deferred, void *user_data)
         mrp_disable_deferred(d->d);
         d->disabled = true;
     }
+
+    lua_settop(d->L, top);
 }