From d622673f4b435b3cd336f1fb3884c5e4cc6d85e2 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Wed, 21 Jun 2023 12:39:43 -0400 Subject: [PATCH] Fix #109161: Baking freeze with invalid edge array The old subsurf DerivedMesh code creates an edge layer without initializing it, which makes the proper lazy initialization of the edge layer later think that it's already finished. To avoid that, remove the edges when creating the DerivedMesh at first. Similar to 85bd64ece468bb6fff097d96c44033074dba13dc --- source/blender/blenkernel/intern/subsurf_ccg.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/blenkernel/intern/subsurf_ccg.cc b/source/blender/blenkernel/intern/subsurf_ccg.cc index 93dbc4f224b..02e67f7c92c 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.cc +++ b/source/blender/blenkernel/intern/subsurf_ccg.cc @@ -1699,6 +1699,7 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, 0, ccgSubSurf_getNumFinalFaces(ss) * 4, ccgSubSurf_getNumFinalFaces(ss)); + CustomData_free_layer_named(&ccgdm->dm.edgeData, ".edge_verts", ccgSubSurf_getNumFinalEdges(ss)); CustomData_free_layer_named( &ccgdm->dm.loopData, ".corner_vert", ccgSubSurf_getNumFinalFaces(ss) * 4); CustomData_free_layer_named(