diff --git a/source/blender/blenkernel/intern/curves_geometry.cc b/source/blender/blenkernel/intern/curves_geometry.cc index 7b23b1aff0b..a23edc06bf5 100644 --- a/source/blender/blenkernel/intern/curves_geometry.cc +++ b/source/blender/blenkernel/intern/curves_geometry.cc @@ -1928,8 +1928,14 @@ void CurvesGeometry::blend_write_prepare(CurvesGeometry::BlendWriteData &write_d this->curves_num(), write_data.curve_layers, write_data.attribute_data); - this->attribute_storage.dna_attributes = write_data.attribute_data.attributes.data(); - this->attribute_storage.dna_attributes_num = write_data.attribute_data.attributes.size(); + if (write_data.attribute_data.attributes.is_empty()) { + this->attribute_storage.dna_attributes = nullptr; + this->attribute_storage.dna_attributes_num = 0; + } + else { + this->attribute_storage.dna_attributes = write_data.attribute_data.attributes.data(); + this->attribute_storage.dna_attributes_num = write_data.attribute_data.attributes.size(); + } } void CurvesGeometry::blend_write(BlendWriter &writer, diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc index 888ae5527f8..c07348ca925 100644 --- a/source/blender/blenkernel/intern/mesh.cc +++ b/source/blender/blenkernel/intern/mesh.cc @@ -386,8 +386,14 @@ static void mesh_blend_write(BlendWriter *writer, ID *id, const void *id_address mesh->face_data, AttrDomain::Face, mesh->faces_num, face_layers, attribute_data); CustomData_blend_write_prepare( mesh->corner_data, AttrDomain::Corner, mesh->corners_num, loop_layers, attribute_data); - mesh->attribute_storage.dna_attributes = attribute_data.attributes.data(); - mesh->attribute_storage.dna_attributes_num = attribute_data.attributes.size(); + if (attribute_data.attributes.is_empty()) { + mesh->attribute_storage.dna_attributes = nullptr; + mesh->attribute_storage.dna_attributes_num = 0; + } + else { + mesh->attribute_storage.dna_attributes = attribute_data.attributes.data(); + mesh->attribute_storage.dna_attributes_num = attribute_data.attributes.size(); + } if (!is_undo) { /* Write forward compatible format. To be removed in 5.0. */ rename_seam_layer_to_old_name( diff --git a/source/blender/blenkernel/intern/pointcloud.cc b/source/blender/blenkernel/intern/pointcloud.cc index 517011fae53..9ef457fe239 100644 --- a/source/blender/blenkernel/intern/pointcloud.cc +++ b/source/blender/blenkernel/intern/pointcloud.cc @@ -128,8 +128,14 @@ static void pointcloud_blend_write(BlendWriter *writer, ID *id, const void *id_a pointcloud->attribute_storage.wrap(), {{AttrDomain::Point, &point_layers}}, attribute_data); CustomData_blend_write_prepare( pointcloud->pdata, AttrDomain::Point, pointcloud->totpoint, point_layers, attribute_data); - pointcloud->attribute_storage.dna_attributes = attribute_data.attributes.data(); - pointcloud->attribute_storage.dna_attributes_num = attribute_data.attributes.size(); + if (attribute_data.attributes.is_empty()) { + pointcloud->attribute_storage.dna_attributes = nullptr; + pointcloud->attribute_storage.dna_attributes_num = 0; + } + else { + pointcloud->attribute_storage.dna_attributes = attribute_data.attributes.data(); + pointcloud->attribute_storage.dna_attributes_num = attribute_data.attributes.size(); + } /* Write LibData */ BLO_write_id_struct(writer, PointCloud, id_address, &pointcloud->id);