diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-03-17 16:47:12 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-03-17 16:47:12 +0300 |
commit | ea3d7a7f58f67b5ce690a92aa0e81e4bb836170b (patch) | |
tree | b2cbc7036a81701a370212c1affaf3297db7dbd0 /intern | |
parent | d6b4fb6429443a3550a953b7cc131e50f1ad2875 (diff) |
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
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/render/image.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp index 8985431b68a..438b2347499 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); |