Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2020-05-08 12:20:30 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2020-05-11 16:26:09 +0300
commit86a16e7381aed89a466244ced5c7ae697977cd4b (patch)
tree639e3f8ed0223ea21843a189eb7d084c04b21353 /source/blender/editors/sculpt_paint/sculpt_undo.c
parent815855b91b9525e98894bcc61f6bafb6e205c86f (diff)
Fix T76512: Sculpt mode: crash when applying base
Differential Revision: https://developer.blender.org/D7663
Diffstat (limited to 'source/blender/editors/sculpt_paint/sculpt_undo.c')
-rw-r--r--source/blender/editors/sculpt_paint/sculpt_undo.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c
index ef25c23d7d3..1cb9b57e81d 100644
--- a/source/blender/editors/sculpt_paint/sculpt_undo.c
+++ b/source/blender/editors/sculpt_paint/sculpt_undo.c
@@ -1565,6 +1565,17 @@ static bool sculpt_undo_use_multires_mesh(bContext *C)
static void sculpt_undo_push_all_grids(Object *object)
{
SculptSession *ss = object->sculpt;
+
+ /* It is possible that undo push is done from an object state where there is no PBVH. This
+ * happens, for example, when an operation which tagged for geometry update was performed prior
+ * to the current operation without making any stroke inbetween.
+ *
+ * Skip pushing nodes based on the following logic: on redo SCULPT_UNDO_COORDS will ensure
+ * PBVH for the new base geometry, which will have same coordinates as if we create PBVH here. */
+ if (ss->pbvh == NULL) {
+ return;
+ }
+
PBVHNode **nodes;
int totnodes;