Browse Source

Update TinyEXR

Alex Szpakowski 6 years ago
parent
commit
44fd8b4e19
2 changed files with 393 additions and 118 deletions
  1. 376 109
      src/libraries/tinyexr/tinyexr.h
  2. 17 9
      src/modules/image/magpie/EXRHandler.cpp

File diff suppressed because it is too large
+ 376 - 109
src/libraries/tinyexr/tinyexr.h


+ 17 - 9
src/modules/image/magpie/EXRHandler.cpp

@@ -118,18 +118,26 @@ FormatHandler::DecodedImage EXRHandler::decode(Data *data)
 	EXRImage exrImage;
 	InitEXRImage(&exrImage);
 
-	EXRVersion exrVersion;
-	if (ParseEXRVersionFromMemory(&exrVersion, mem, memsize) != TINYEXR_SUCCESS)
-		throw love::Exception("Could not parse EXR image header.");
+	try
+	{
+		EXRVersion exrVersion;
+		if (ParseEXRVersionFromMemory(&exrVersion, mem, memsize) != TINYEXR_SUCCESS)
+			throw love::Exception("Could not parse EXR image header.");
 
-	if (exrVersion.multipart || exrVersion.non_image || exrVersion.tiled)
-		throw love::Exception("Multi-part, tiled, and non-image EXR files are not supported.");
+		if (exrVersion.multipart || exrVersion.non_image || exrVersion.tiled)
+			throw love::Exception("Multi-part, tiled, and non-image EXR files are not supported.");
 
-	if (ParseEXRHeaderFromMemory(&exrHeader, &exrVersion, mem, memsize, &err) != TINYEXR_SUCCESS)
-		throw love::Exception("Could not parse EXR image header: %s", err);
+		if (ParseEXRHeaderFromMemory(&exrHeader, &exrVersion, mem, memsize, &err) != TINYEXR_SUCCESS)
+			throw love::Exception("Could not parse EXR image header: %s", err);
 
-	if (LoadEXRImageFromMemory(&exrImage, &exrHeader, mem, memsize, &err) != TINYEXR_SUCCESS)
-		throw love::Exception("Could not decode EXR image: %s", err);
+		if (LoadEXRImageFromMemory(&exrImage, &exrHeader, mem, memsize, &err) != TINYEXR_SUCCESS)
+			throw love::Exception("Could not decode EXR image: %s", err);
+	}
+	catch (love::Exception &)
+	{
+		FreeEXRErrorMessage(err);
+		throw;
+	}
 
 	int pixelType = exrHeader.pixel_types[0];
 

Some files were not shown because too many files changed in this diff