Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Stockner <lukas.stockner@freenet.de>2018-05-27 18:14:01 +0300
committerLukas Stockner <lukas.stockner@freenet.de>2018-05-27 18:16:15 +0300
commitedce44d6931586fad3cee019db762d54e73a886a (patch)
tree181b0ef4048592930010a221f60d6af03d4281af
parent56254a42e0aa42a39e1f3f7b3d13905168c3f39c (diff)
Cycles: Fix problems in the IES loader when rendering with no file selected
-rw-r--r--intern/cycles/blender/blender_shader.cpp3
-rw-r--r--intern/cycles/blender/blender_util.h2
-rw-r--r--intern/cycles/render/light.cpp6
-rw-r--r--intern/cycles/util/util_ies.cpp4
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;