diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-02-05 09:53:30 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-02-05 09:54:13 +0300 |
commit | ceb645bc564f836bda3d87981a3d03c2ffc1419c (patch) | |
tree | 71c60ac2d2b66b021572d95c12f80536c72201ee /source | |
parent | e84e8cb4972e74e1b869bf80f02615c2936e5b19 (diff) |
Fix T53986: Crash saving during sculpt stroke
Also remove unused struct member.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_paint.h | 1 | ||||
-rw-r--r-- | source/blender/editors/util/ed_util.c | 6 |
2 files changed, 5 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index 8e7e69d22ca..de2c862651c 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -212,7 +212,6 @@ typedef struct SculptSession { /* Layer brush persistence between strokes */ float (*layer_co)[3]; /* Copy of the mesh vertices' locations */ - struct SculptStroke *stroke; struct StrokeCache *cache; union { diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c index 278b8e34311..c920c4524a1 100644 --- a/source/blender/editors/util/ed_util.c +++ b/source/blender/editors/util/ed_util.c @@ -168,7 +168,11 @@ bool ED_editors_flush_edits(const bContext *C, bool for_render) * exiting we might not have a context for edit object and multiple sculpt * objects can exist at the same time */ for (ob = bmain->object.first; ob; ob = ob->id.next) { - if (ob->mode & OB_MODE_SCULPT) { + if ((ob->mode & OB_MODE_SCULPT) && + /* Don't allow flushing while in the middle of a stroke (frees data in use). + * Auto-save prevents this from happening but scripts may cause a flush on saving: T53986. */ + ((ob->sculpt && ob->sculpt->cache) == 0)) + { /* flush multires changes (for sculpt) */ multires_force_update(ob); has_edited = true; |