diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2016-06-01 16:26:58 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2016-06-01 16:29:19 +0300 |
commit | b1704d18a1cc15f0dbb5fe6e27d80f0fae4b9e72 (patch) | |
tree | c03e795488bbeb9b595f0d5dc68a8b996891b603 /source | |
parent | 8cf8679b53e3aabb325301739d79ee1440977053 (diff) |
Fix T48415: Segfault on opening .blend in which a 'surface' force object was saved in Edit mode.
In that case, surface modifier won't run (until surface object goes back to Object mode),
and its bvhtree remains NULL.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/effect.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c index 6284b3a46fb..f06dd6f9de4 100644 --- a/source/blender/blenkernel/intern/effect.c +++ b/source/blender/blenkernel/intern/effect.c @@ -566,7 +566,9 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin float cfra = eff->scene->r.cfra; int ret = 0; - if (eff->pd && eff->pd->shape==PFIELD_SHAPE_SURFACE && eff->surmd) { + /* In case surface object is in Edit mode when loading the .blend, surface modifier is never executed + * and bvhtree never built, see T48415. */ + if (eff->pd && eff->pd->shape==PFIELD_SHAPE_SURFACE && eff->surmd && eff->surmd->bvhtree) { /* closest point in the object surface is an effector */ float vec[3]; |