[Bf-blender-cvs] [f78f60a84e9] sculpt-mode-features: fix attempt for crashes when loading blends with volume csg objects

Martin Felke noreply at git.blender.org
Tue Apr 9 00:47:34 CEST 2019


Commit: f78f60a84e9570d0530ef50a2638167b90d759e4
Author: Martin Felke
Date:   Tue Apr 9 00:44:41 2019 +0200
Branches: sculpt-mode-features
https://developer.blender.org/rBf78f60a84e9570d0530ef50a2638167b90d759e4

fix attempt for crashes when loading blends with volume csg objects

Note this isnt solved yet, its some weird stuff going on with pointers not in sync etc.
Must be somewhere in the object linking system...

===================================================================

M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/writefile.c
M	source/blender/modifiers/intern/MOD_remesh.c

===================================================================

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index eedd116d31f..a9f00bfac6b 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5790,6 +5790,10 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
 			MultiresModifierData *mmd = (MultiresModifierData *)md;
 			mmd->subdiv = NULL;
 		}
+		else if (md->type == eModifierType_Remesh) {
+			RemeshModifierData *rmd = (RemeshModifierData *)md;
+			link_list(fd, &rmd->csg_operands);
+		}
 	}
 }
 
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index e0746c7c3dd..dc81c73a516 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1808,6 +1808,13 @@ static void write_modifiers(WriteData *wd, ListBase *modbase)
 				}
 			}
 		}
+		else if (md->type == eModifierType_Remesh) {
+			RemeshModifierData *rmd = (RemeshModifierData *)md;
+			CSGVolume_Object *vcob;
+			for (vcob = rmd->csg_operands.first; vcob; vcob = vcob->next) {
+				writestruct(wd, DATA, CSGVolume_Object, 1, vcob);
+			}
+		}
 	}
 }
 
diff --git a/source/blender/modifiers/intern/MOD_remesh.c b/source/blender/modifiers/intern/MOD_remesh.c
index 61fa13c4a13..e7d6e6af11e 100644
--- a/source/blender/modifiers/intern/MOD_remesh.c
+++ b/source/blender/modifiers/intern/MOD_remesh.c
@@ -373,10 +373,7 @@ static void foreachObjectLink(
 
 	for (vcob = rmd->csg_operands.first; vcob; vcob = vcob->next)
 	{
-		if (vcob->object)
-		{
-			walk(userData, ob, &vcob->object, IDWALK_CB_NOP);
-		}
+		walk(userData, ob, &vcob->object, IDWALK_CB_NOP);
 	}
 }
 
@@ -421,7 +418,7 @@ ModifierTypeInfo modifierType_Remesh = {
 	/* updateDepsgraph */   updateDepsgraph,
 	/* dependsOnTime */     NULL,
 	/* dependsOnNormals */	NULL,
-	/* foreachObjectLink */ NULL, //foreachObjectLink,
+	/* foreachObjectLink */ foreachObjectLink,
 	/* foreachIDLink */     NULL,
 	/* freeRuntimeData */   NULL,
 };



More information about the Bf-blender-cvs mailing list