Fix #79961: Outliner Data API crash with a MeshSkinVertex in editmode

When in mesh editmode, skin_vertices point to bmesh customdata, the
skin_vertices data is empty since custom data is stored per element
instead of a single array there (same es UVs etc.).

Fix similar to 3e2619b3e7, 5179b8236b (basically disallowing the
access in editmode).

Pull Request: https://projects.blender.org/blender/blender/pulls/119149
This commit is contained in:
Philipp Oeser
2024-03-07 11:30:58 +01:00
committed by Philipp Oeser
parent 239395565a
commit d5fe4c40ed

View File

@@ -1219,13 +1219,14 @@ static void rna_MeshSkinVertexLayer_data_begin(CollectionPropertyIterator *iter,
{
Mesh *mesh = rna_mesh(ptr);
CustomDataLayer *layer = (CustomDataLayer *)ptr->data;
rna_iterator_array_begin(iter, layer->data, sizeof(MVertSkin), mesh->verts_num, 0, nullptr);
rna_iterator_array_begin(
iter, layer->data, sizeof(MVertSkin), (mesh->edit_mesh) ? 0 : mesh->verts_num, 0, nullptr);
}
static int rna_MeshSkinVertexLayer_data_length(PointerRNA *ptr)
{
Mesh *mesh = rna_mesh(ptr);
return mesh->verts_num;
return (mesh->edit_mesh) ? 0 : mesh->verts_num;
}
/* End skin vertices */