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