From fa01a1738bd1e3a6750ffbe523a282bc22de3991 Mon Sep 17 00:00:00 2001 From: Mai Lavelle Date: Tue, 3 Apr 2018 23:36:35 -0400 Subject: Fix T54337: Cycles crash with simple subd object in debug build --- intern/cycles/render/mesh_subdivision.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'intern/cycles') 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*)&attr.buffer[0], - (OsdValue*)&attr.buffer[num_refiner_verts * attr.data_sizeof()]); - } - else { - patch_table->ComputeLocalPointValues((OsdValue*)&attr.buffer[0], - (OsdValue*)&attr.buffer[num_refiner_verts * attr.data_sizeof()]); + if(num_refiner_verts) { + if(attr.same_storage(attr.type, TypeDesc::TypeFloat)) { + patch_table->ComputeLocalPointValues((OsdValue*)&attr.buffer[0], + (OsdValue*)&attr.buffer[num_refiner_verts * attr.data_sizeof()]); + } + else { + patch_table->ComputeLocalPointValues((OsdValue*)&attr.buffer[0], + (OsdValue*)&attr.buffer[num_refiner_verts * attr.data_sizeof()]); + } } } else if(attr.element == ATTR_ELEMENT_CORNER || attr.element == ATTR_ELEMENT_CORNER_BYTE) { -- cgit v1.2.3