[Bf-blender-cvs] [c88dcfb] strand_gpu: Fix crash when adding a strands modifier and the fiber vertex/edge buffer is NULL.
Lukas Tönne
noreply at git.blender.org
Wed Jul 13 18:39:09 CEST 2016
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();
More information about the Bf-blender-cvs
mailing list