Commit: c88dcfbdf13c34bef8bf0c1660ea71b396f75521
Author: Lukas Tönne
Date:   Wed Jul 13 18:27:54 2016 +0200
Branches: strand_gpu
https://developer.blender.org/rBc88dcfbdf13c34bef8bf0c1660ea71b396f75521

Fix crash when adding a strands modifier and the fiber vertex/edge buffer is 
NULL.

The NULL buffer pointer is expected, just needs a sanity check.

===================================================================

M       source/blender/editors/space_view3d/drawstrands.c

===================================================================

diff --git a/source/blender/editors/space_view3d/drawstrands.c 
b/source/blender/editors/space_view3d/drawstrands.c
index 531a2e1..35ae160 100644
--- a/source/blender/editors/space_view3d/drawstrands.c
+++ b/source/blender/editors/space_view3d/drawstrands.c
@@ -153,17 +153,19 @@ void draw_strands(Scene *scene, View3D *UNUSED(v3d), 
RegionView3D *rv3d,
                        }
                }
                else {
-                       struct GPUAttrib *attrib;
-                       int num_attrib;
-                       GPU_strand_shader_get_fiber_attributes(shader, &attrib, 
&num_attrib);
-                       
-                       int elemsize = GPU_attrib_element_size(attrib, 
num_attrib);
-                       GPU_interleaved_attrib_setup(buffer->fiber_points, 
attrib, num_attrib, elemsize, false);
-                       
-                       GPU_buffer_draw_elements(buffer->fiber_edges, GL_LINES, 
0,
-                                                buffer->fiber_totedges * 2);
-                       
-                       GPU_interleaved_attrib_unbind();
+                       if (buffer->fiber_points && buffer->fiber_edges) {
+                               struct GPUAttrib *attrib;
+                               int num_attrib;
+                               GPU_strand_shader_get_fiber_attributes(shader, 
&attrib, &num_attrib);
+                               
+                               int elemsize = GPU_attrib_element_size(attrib, 
num_attrib);
+                               
GPU_interleaved_attrib_setup(buffer->fiber_points, attrib, num_attrib, 
elemsize, false);
+                               
+                               GPU_buffer_draw_elements(buffer->fiber_edges, 
GL_LINES, 0,
+                                                        buffer->fiber_totedges 
* 2);
+                               
+                               GPU_interleaved_attrib_unbind();
+                       }
                }
                GPU_strands_buffer_unbind();
                
@@ -535,17 +537,19 @@ void draw_strands_edit(Scene *scene, View3D *UNUSED(v3d), 
RegionView3D *rv3d,
                        }
                }
                else {
-                       struct GPUAttrib *attrib;
-                       int num_attrib;
-                       GPU_strand_shader_get_fiber_attributes(shader, &attrib, 
&num_attrib);
-                       
-                       int elemsize = GPU_attrib_element_size(attrib, 
num_attrib);
-                       GPU_interleaved_attrib_setup(buffer->fiber_points, 
attrib, num_attrib, elemsize, false);
-                       
-                       GPU_buffer_draw_elements(buffer->fiber_edges, GL_LINES, 
0,
-                                                buffer->fiber_totedges * 2);
-                       
-                       GPU_interleaved_attrib_unbind();
+                       if (buffer->fiber_points && buffer->fiber_edges) {
+                               struct GPUAttrib *attrib;
+                               int num_attrib;
+                               GPU_strand_shader_get_fiber_attributes(shader, 
&attrib, &num_attrib);
+                               
+                               int elemsize = GPU_attrib_element_size(attrib, 
num_attrib);
+                               
GPU_interleaved_attrib_setup(buffer->fiber_points, attrib, num_attrib, 
elemsize, false);
+                               
+                               GPU_buffer_draw_elements(buffer->fiber_edges, 
GL_LINES, 0,
+                                                        buffer->fiber_totedges 
* 2);
+                               
+                               GPU_interleaved_attrib_unbind();
+                       }
                }
                GPU_strands_buffer_unbind();

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to