diff options
author | Lukas Stockner <lukas.stockner@freenet.de> | 2018-05-27 18:14:01 +0300 |
---|---|---|
committer | Lukas Stockner <lukas.stockner@freenet.de> | 2018-05-27 18:16:15 +0300 |
commit | edce44d6931586fad3cee019db762d54e73a886a (patch) | |
tree | 181b0ef4048592930010a221f60d6af03d4281af /intern/cycles | |
parent | 56254a42e0aa42a39e1f3f7b3d13905168c3f39c (diff) |
Cycles: Fix problems in the IES loader when rendering with no file selected
Diffstat (limited to 'intern/cycles')
-rw-r--r-- | intern/cycles/blender/blender_shader.cpp | 3 | ||||
-rw-r--r-- | intern/cycles/blender/blender_util.h | 2 | ||||
-rw-r--r-- | intern/cycles/render/light.cpp | 6 | ||||
-rw-r--r-- | intern/cycles/util/util_ies.cpp | 4 |
4 files changed, 12 insertions, 3 deletions
diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp index c6144cef1bf..9896dd1d94f 100644 --- a/intern/cycles/blender/blender_shader.cpp +++ b/intern/cycles/blender/blender_shader.cpp @@ -827,6 +827,9 @@ static ShaderNode *add_node(Scene *scene, break; case BL::ShaderNodeTexIES::mode_INTERNAL: ies->ies = get_text_datablock_content(b_ies_node.ies().ptr); + if(ies->ies.empty()) { + ies->ies = "\n"; + } break; } node = ies; diff --git a/intern/cycles/blender/blender_util.h b/intern/cycles/blender/blender_util.h index 87d6c7eba8a..85bff8f8323 100644 --- a/intern/cycles/blender/blender_util.h +++ b/intern/cycles/blender/blender_util.h @@ -468,7 +468,7 @@ static inline string blender_absolute_path(BL::BlendData& b_data, return path; } -static inline string get_text_datablock_content(const PointerRNA&& ptr) +static inline string get_text_datablock_content(const PointerRNA& ptr) { if(ptr.data == NULL) { return ""; diff --git a/intern/cycles/render/light.cpp b/intern/cycles/render/light.cpp index f0824ef4319..5a77094c0c1 100644 --- a/intern/cycles/render/light.cpp +++ b/intern/cycles/render/light.cpp @@ -891,8 +891,10 @@ void LightManager::tag_update(Scene * /*scene*/) int LightManager::add_ies_from_file(ustring filename) { string content; - /* If the file can't be opened, call with an empty string */ - path_read_text(filename.c_str(), content); + /* If the file can't be opened, call with an empty line */ + if(filename.empty() || !path_read_text(filename.c_str(), content)) { + content == "\n"; + } return add_ies(ustring(content)); } diff --git a/intern/cycles/util/util_ies.cpp b/intern/cycles/util/util_ies.cpp index 4824c886609..e068957325b 100644 --- a/intern/cycles/util/util_ies.cpp +++ b/intern/cycles/util/util_ies.cpp @@ -109,6 +109,10 @@ public: bool IESFile::parse(ustring ies) { + if(ies.empty()) { + return false; + } + IESTextParser parser(ies); if(parser.eof()) { return false; |