diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-02-05 09:53:30 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-02-15 07:49:02 +0300 |
commit | f5c0df360140a807582ef8e46351414571876e10 (patch) | |
tree | 39703ca2f755880dcf407c5cdc5624182f21a48b | |
parent | 81697c772c7320fe122457620aa26058d478eacf (diff) |
Fix T53986: Crash saving during sculpt stroke
Also remove unused struct member.
-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 64585879e5d..b436043f965 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -199,7 +199,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; } SculptSession; diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c index 1f1a778cac7..7ec223a8eb9 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; |