diff options
author | Martin Felke <martin.felke@googlemail.com> | 2019-03-02 21:14:34 +0300 |
---|---|---|
committer | Martin Felke <martin.felke@googlemail.com> | 2019-03-02 21:14:34 +0300 |
commit | 0b20de36082764e0ce34ceb8dbfb81aea30a68a5 (patch) | |
tree | b0ac2a5be7b126df02231e3979a346e95e63845b | |
parent | bb1ca80bc10a3d7422ac937a6877d1084296786e (diff) |
attempt to fix crash with dynamic + constraints (but the problems are multiple depsgraph threads here)
-rw-r--r-- | source/blender/blenkernel/intern/fracture_constraints.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/source/blender/blenkernel/intern/fracture_constraints.c b/source/blender/blenkernel/intern/fracture_constraints.c index 8dfe921a860..bacf8e98061 100644 --- a/source/blender/blenkernel/intern/fracture_constraints.c +++ b/source/blender/blenkernel/intern/fracture_constraints.c @@ -402,20 +402,25 @@ void BKE_fracture_meshislands_connect(Scene* sc, FractureModifierData *fmd, Shar if (ok) { /* search local constraint list instead of global one !!! saves lots of time */ int i; - for (i = 0; i < mi1->participating_constraint_count; i++) { - con = mi1->participating_constraints[i]; - if (con && ((con->mi1 == mi2) || (con->mi2 == mi2))) { - con_found = true; - break; + + if (mi1->participating_constraints != NULL) { + for (i = 0; i < mi1->participating_constraint_count; i++) { + con = mi1->participating_constraints[i]; + if (con && ((con->mi1 == mi2) || (con->mi2 == mi2))) { + con_found = true; + break; + } } } if (!con_found) { - for (i = 0; i < mi2->participating_constraint_count; i++) { - con = mi2->participating_constraints[i]; - if (con && ((con->mi1 == mi1) || (con->mi2 == mi1))) { - con_found = true; - break; + if (mi2->participating_constraints != NULL) { + for (i = 0; i < mi2->participating_constraint_count; i++) { + con = mi2->participating_constraints[i]; + if (con && ((con->mi1 == mi1) || (con->mi2 == mi1))) { + con_found = true; + break; + } } } } |