From 88819e91d8d87b0921a9d19f4b5ef315b13f6da0 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 3 Feb 2022 16:52:16 +0100 Subject: Fix T94435: remove anonymous attributes when applying modifier Differential Revision: https://developer.blender.org/D13994 --- source/blender/blenkernel/intern/customdata.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'source/blender/blenkernel/intern') diff --git a/source/blender/blenkernel/intern/customdata.cc b/source/blender/blenkernel/intern/customdata.cc index 02b50027ef9..e4c18325d76 100644 --- a/source/blender/blenkernel/intern/customdata.cc +++ b/source/blender/blenkernel/intern/customdata.cc @@ -2780,6 +2780,24 @@ void CustomData_free_layers(CustomData *data, int type, int totelem) } } +void CustomData_free_layers_anonymous(struct CustomData *data, int totelem) +{ + while (true) { + bool found_anonymous_layer = false; + for (int i = 0; i < data->totlayer; i++) { + const CustomDataLayer *layer = &data->layers[i]; + if (layer->anonymous_id != NULL) { + CustomData_free_layer(data, layer->type, totelem, i); + found_anonymous_layer = true; + break; + } + } + if (!found_anonymous_layer) { + break; + } + } +} + bool CustomData_has_layer(const CustomData *data, int type) { return (CustomData_get_layer_index(data, type) != -1); -- cgit v1.2.3