[Bf-blender-cvs] [ea3d7a7f58] master: Fix T50968: Cycles crashes when image datablock points to a directory

Sergey Sharybin noreply at git.blender.org
Fri Mar 17 14:48:14 CET 2017


Commit: ea3d7a7f58f67b5ce690a92aa0e81e4bb836170b
Author: Sergey Sharybin
Date:   Fri Mar 17 14:47:12 2017 +0100
Branches: master
https://developer.blender.org/rBea3d7a7f58f67b5ce690a92aa0e81e4bb836170b

Fix T50968: Cycles crashes when image datablock points to a directory

See more details about root of the cause there:

  https://github.com/OpenImageIO/oiio/pull/1640

===================================================================

M	intern/cycles/render/image.cpp

===================================================================

diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index 8985431b68..438b234749 100644
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@ -156,6 +156,16 @@ ImageManager::ImageDataType ImageManager::get_image_metadata(const string& filen
 		}
 	}
 
+	/* Perform preliminary checks, with meaningful logging. */
+	if(!path_exists(filename)) {
+		VLOG(1) << "File '" << filename << "' does not exist.";
+		return IMAGE_DATA_TYPE_BYTE4;
+	}
+	if(path_is_directory(filename)) {
+		VLOG(1) << "File '" << filename << "' is a directory, can't use as image.";
+		return IMAGE_DATA_TYPE_BYTE4;
+	}
+
 	ImageInput *in = ImageInput::create(filename);
 
 	if(in) {
@@ -432,6 +442,11 @@ bool ImageManager::file_load_image_generic(Image *img, ImageInput **in, int &wid
 		return false;
 
 	if(!img->builtin_data) {
+		/* NOTE: Error logging is done in meta data acquisition. */
+		if(!path_exists(img->filename) || path_is_directory(img->filename)) {
+			return false;
+		}
+
 		/* load image from file through OIIO */
 		*in = ImageInput::create(img->filename);




More information about the Bf-blender-cvs mailing list