[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45692] trunk/blender/source/blender/imbuf /intern/openexr/openexr_api.cpp: Avoid invalid delete call when loading multilayer EXR files with that don' t fit the Blender pass naming scheme.

Lukas Toenne lukas.toenne at googlemail.com
Mon Apr 16 13:57:23 CEST 2012


Revision: 45692
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45692
Author:   lukastoenne
Date:     2012-04-16 11:57:22 +0000 (Mon, 16 Apr 2012)
Log Message:
-----------
Avoid invalid delete call when loading multilayer EXR files with that don't fit the Blender pass naming scheme. If the imb_exr_begin_read_mem function fails reading the EXR (e.g. because of too many channels per pass) it deletes the file internally, leading to segfault on second delete.

Modified Paths:
--------------
    trunk/blender/source/blender/imbuf/intern/openexr/openexr_api.cpp

Modified: trunk/blender/source/blender/imbuf/intern/openexr/openexr_api.cpp
===================================================================
--- trunk/blender/source/blender/imbuf/intern/openexr/openexr_api.cpp	2012-04-16 11:54:28 UTC (rev 45691)
+++ trunk/blender/source/blender/imbuf/intern/openexr/openexr_api.cpp	2012-04-16 11:57:22 UTC (rev 45692)
@@ -1007,7 +1007,6 @@
 					if (handle) {
 						IMB_exr_read_channels(handle);
 						ibuf->userdata= handle;			/* potential danger, the caller has to check for this! */
-						return ibuf;
 					}
 				}
 				else {
@@ -1055,11 +1054,12 @@
 					//
 					// if (flag & IM_rect)
 					//     IMB_rect_from_float(ibuf);
+					
+					/* file is no longer needed */
+					delete file;
 				}
 			}
-			
 		}
-		delete file;
 		return(ibuf);
 	}
 	catch (const std::exception &exc)




More information about the Bf-blender-cvs mailing list