Browse Source

Fixed a potential memory leak

Alex Szpakowski 12 years ago
parent
commit
7601ef05f4
2 changed files with 6 additions and 4 deletions
  1. 3 4
      src/modules/window/sdl/Window.cpp
  2. 3 0
      src/modules/window/wrap_Window.cpp

+ 3 - 4
src/modules/window/sdl/Window.cpp

@@ -45,6 +45,9 @@ Window::Window()
 
 Window::~Window()
 {
+	if (currentMode.icon)
+		currentMode.icon->release();
+
 	SDL_QuitSubSystem(SDL_INIT_VIDEO);
 }
 
@@ -58,7 +61,6 @@ Window::_currentMode::_currentMode()
 
 bool Window::setWindow(int width, int height, graphics::Graphics *graphics, WindowFlags *flags)
 {
-
 	if (graphics)
 		graphics->unSetMode();
 
@@ -314,9 +316,6 @@ bool Window::setIcon(love::image::ImageData *imgd)
 
 love::image::ImageData *Window::getIcon()
 {
-	if (currentMode.icon)
-		currentMode.icon->retain();
-
 	return currentMode.icon;
 }
 

+ 3 - 0
src/modules/window/wrap_Window.cpp

@@ -193,7 +193,10 @@ int w_getIcon(lua_State *L)
 {
 	image::ImageData *i = instance->getIcon();
 	if (i)
+	{
+		i->retain();
 		luax_newtype(L, "ImageData", IMAGE_IMAGE_DATA_T, (void*) i);
+	}
 	else
 		lua_pushnil(L);
 	return 1;