diff src/modules/image/devil/ImageData.cpp @ 1391:a742f6edaf92

Fixed filedata not being cleaned up when love.image.newImageData(filepath) fails
author Alex Szpakowski <slime73@gmail.com>
date Tue, 19 Mar 2013 09:01:15 -0300
parents 730ed5f01ab0
children d46820870f0a
line wrap: on
line diff
--- a/src/modules/image/devil/ImageData.cpp	Mon Mar 18 22:55:41 2013 -0300
+++ b/src/modules/image/devil/ImageData.cpp	Tue Mar 19 09:01:15 2013 -0300
@@ -53,7 +53,15 @@
 ImageData::ImageData(filesystem::File *file)
 {
 	Data *data = file->read();
-	load(data);
+	try
+	{
+		load(data);
+	}
+	catch (love::Exception &)
+	{
+		data->release();
+		throw;
+	}
 	data->release();
 }
 
@@ -124,10 +132,10 @@
 
 		create(width, height, ilGetData());
 	}
-	catch(std::exception &)
+	catch(std::exception &e)
 	{
 		ilDeleteImages(1, &image);
-		throw;
+		throw love::Exception("%s", e.what());
 	}
 
 	ilDeleteImages(1, &image);