Fixed Canvas:renderTo to restore the previous canvases if an error occurs in the passed function.

This commit is contained in:
Alex Szpakowski
2015-08-12 23:45:44 -03:00
parent 12450c9657
commit 5bdea01559
+4 -1
View File
@@ -51,12 +51,15 @@ int w_Canvas_renderTo(lua_State *L)
luax_catchexcept(L, [&](){ graphics->setCanvas(canvas); });
lua_settop(L, 2); // make sure the function is on top of the stack
lua_call(L, 0, 0);
int status = lua_pcall(L, 0, 0, 0);
graphics->setCanvas(oldcanvases);
for (Canvas *c : oldcanvases)
c->release();
if (status != 0)
return lua_error(L);
}
return 0;