Fix T53986: Crash saving during sculpt stroke

Also remove unused struct member.
This commit is contained in:
Campbell Barton 2018-02-05 17:53:30 +11:00
parent e84e8cb497
commit ceb645bc56
Notes: blender-bot 2023-02-14 19:45:25 +01:00
Referenced by issue #53986, seg fault when saving from script
Referenced by issue #53683, 2.79a release
2 changed files with 5 additions and 2 deletions

View File

@ -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 {

View File

@ -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;