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_displist.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_displist.h')
-rw-r--r-- | source/blender/blenkernel/BKE_displist.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_displist.h b/source/blender/blenkernel/BKE_displist.h index 3f9589ae341..c232234dd62 100644 --- a/source/blender/blenkernel/BKE_displist.h +++ b/source/blender/blenkernel/BKE_displist.h @@ -49,6 +49,7 @@ enum { /* prototypes */ struct Depsgraph; +struct LinkNode; struct ListBase; struct Main; struct Mesh; @@ -83,12 +84,15 @@ void BKE_displist_make_surf( struct Mesh **r_final, const bool for_render, const bool for_orco, const bool use_render_resolution); void BKE_displist_make_curveTypes( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, - const bool for_render, const bool for_orco); + const bool for_render, const bool for_orco, + struct LinkNode *ob_cyclic_list); void BKE_displist_make_curveTypes_forRender( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ListBase *dispbase, - struct Mesh **r_final, const bool for_orco, const bool use_render_resolution); + struct Mesh **r_final, const bool for_orco, const bool use_render_resolution, + struct LinkNode *ob_cyclic_list); void BKE_displist_make_curveTypes_forOrco( - struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ListBase *dispbase); + struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ListBase *dispbase, + struct LinkNode *ob_cyclic_list); void BKE_displist_make_mball( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob); void BKE_displist_make_mball_forRender( |