diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-02-14 09:21:55 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-02-14 09:21:55 +0300 |
commit | 6074f62d1a099fc378aa25506a93321dba2d956b (patch) | |
tree | becbb4abdb6c9c9a047c1a6f5d5c94c53e56ff50 /source/blender/blenkernel/BKE_curve.h | |
parent | caa8e7ff2894ed22ea436bc61b06fb292d844108 (diff) |
Fix T61353: Crash converting a curve to a mesh
This was caused by curves pointing to each other
creating a cyclic dependency.
While the dependency graph detects this, generating a mesh for render
recursively generates data which cashes in this case.
Add in a check to detect cyclic links.
Note, this bug exists in 2.7x too - but only crashes on render
since 2.7x didn't use 'for_render' when converting data.
Diffstat (limited to 'source/blender/blenkernel/BKE_curve.h')
-rw-r--r-- | source/blender/blenkernel/BKE_curve.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h index 236c5e8da06..fe8f9ace134 100644 --- a/source/blender/blenkernel/BKE_curve.h +++ b/source/blender/blenkernel/BKE_curve.h @@ -27,6 +27,7 @@ struct Curve; struct Depsgraph; struct EditNurb; struct GHash; +struct LinkNode; struct ListBase; struct Main; struct Nurb; @@ -119,7 +120,8 @@ void BKE_curve_bevelList_free(struct ListBase *bev); void BKE_curve_bevelList_make(struct Object *ob, struct ListBase *nurbs, bool for_render); void BKE_curve_bevel_make( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ListBase *disp, - const bool for_render, const bool use_render_resolution); + const bool for_render, const bool use_render_resolution, + struct LinkNode *ob_cyclic_list); void BKE_curve_forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride); void BKE_curve_forward_diff_tangent_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride); |