Browse Source

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

Alex Szpakowski 10 years ago
parent
commit
5bdea01559
1 changed files with 4 additions and 1 deletions
  1. 4 1
      src/modules/graphics/opengl/wrap_Canvas.cpp

+ 4 - 1
src/modules/graphics/opengl/wrap_Canvas.cpp

@@ -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;