From cd30bce7f180e9fd307ecf808ef2d363e0ab0973 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Tue, 11 Apr 2023 12:27:41 -0400 Subject: [PATCH] Fix #106743: Crash writing with legacy mesh format The new poly offsets were needed to interpolate attribute to a different domain, but they were cleared when the legacy MPoly array was built. Instead just clear the offsets a bit later after the other conversions. --- source/blender/blenkernel/intern/mesh.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc index 8f7bbff61a7..34b720bdc36 100644 --- a/source/blender/blenkernel/intern/mesh.cc +++ b/source/blender/blenkernel/intern/mesh.cc @@ -278,7 +278,6 @@ static void mesh_blend_write(BlendWriter *writer, ID *id, const void *id_address MutableSpan legacy_polys = BKE_mesh_legacy_convert_offsets_to_polys( mesh, temp_arrays_for_legacy_format, poly_layers); - mesh->poly_offset_indices = nullptr; BKE_mesh_legacy_convert_hide_layers_to_flags(mesh, legacy_polys); BKE_mesh_legacy_convert_selection_layers_to_flags(mesh, legacy_polys); @@ -292,6 +291,7 @@ static void mesh_blend_write(BlendWriter *writer, ID *id, const void *id_address mesh->active_color_attribute = nullptr; mesh->default_color_attribute = nullptr; BKE_mesh_legacy_convert_loose_edges_to_flag(mesh); + mesh->poly_offset_indices = nullptr; /* Set deprecated mesh data pointers for forward compatibility. */ mesh->medge = const_cast(mesh->edges().data());