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:
authorMai Lavelle <mai.lavelle@gmail.com>2018-04-04 06:36:35 +0300
committerMai Lavelle <mai.lavelle@gmail.com>2018-04-04 06:37:12 +0300
commitfa01a1738bd1e3a6750ffbe523a282bc22de3991 (patch)
tree4e8d93acfccf9972e55f73666dc58e7e2c2c669c /intern/cycles/render/mesh_subdivision.cpp
parent8c4d28cdb907d212a190147151f2e90459542813 (diff)
Fix T54337: Cycles crash with simple subd object in debug build
Diffstat (limited to 'intern/cycles/render/mesh_subdivision.cpp')
-rw-r--r--intern/cycles/render/mesh_subdivision.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/intern/cycles/render/mesh_subdivision.cpp b/intern/cycles/render/mesh_subdivision.cpp
index 585ed77b026..ea71f71b655 100644
--- a/intern/cycles/render/mesh_subdivision.cpp
+++ b/intern/cycles/render/mesh_subdivision.cpp
@@ -204,7 +204,9 @@ public:
src = dest;
}
- patch_table->ComputeLocalPointValues(&verts[0], &verts[num_refiner_verts]);
+ if(num_refiner_verts) {
+ patch_table->ComputeLocalPointValues(&verts[0], &verts[num_refiner_verts]);
+ }
/* create patch map */
patch_map = new Far::PatchMap(*patch_table);
@@ -236,13 +238,15 @@ public:
src = dest;
}
- if(attr.same_storage(attr.type, TypeDesc::TypeFloat)) {
- patch_table->ComputeLocalPointValues((OsdValue<float>*)&attr.buffer[0],
- (OsdValue<float>*)&attr.buffer[num_refiner_verts * attr.data_sizeof()]);
- }
- else {
- patch_table->ComputeLocalPointValues((OsdValue<float4>*)&attr.buffer[0],
- (OsdValue<float4>*)&attr.buffer[num_refiner_verts * attr.data_sizeof()]);
+ if(num_refiner_verts) {
+ if(attr.same_storage(attr.type, TypeDesc::TypeFloat)) {
+ patch_table->ComputeLocalPointValues((OsdValue<float>*)&attr.buffer[0],
+ (OsdValue<float>*)&attr.buffer[num_refiner_verts * attr.data_sizeof()]);
+ }
+ else {
+ patch_table->ComputeLocalPointValues((OsdValue<float4>*)&attr.buffer[0],
+ (OsdValue<float4>*)&attr.buffer[num_refiner_verts * attr.data_sizeof()]);
+ }
}
}
else if(attr.element == ATTR_ELEMENT_CORNER || attr.element == ATTR_ELEMENT_CORNER_BYTE) {