Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/intern/customdata.cc23
1 files changed, 8 insertions, 15 deletions
diff --git a/source/blender/blenkernel/intern/customdata.cc b/source/blender/blenkernel/intern/customdata.cc
index 01017466764..15d92614c42 100644
--- a/source/blender/blenkernel/intern/customdata.cc
+++ b/source/blender/blenkernel/intern/customdata.cc
@@ -2799,6 +2799,14 @@ static CustomDataLayer *customData_add_layer__internal(CustomData *data,
const LayerTypeInfo *typeInfo = layerType_getInfo(type);
int flag = 0;
+ /* Some layer types only support a single layer. */
+ if (!typeInfo->defaultname && CustomData_has_layer(data, type)) {
+ /* This function doesn't support dealing with existing layer data for these layer types when
+ * the layer already exists. */
+ BLI_assert(layerdata == nullptr);
+ return &data->layers[CustomData_get_layer_index(data, type)];
+ }
+
void *newlayerdata = nullptr;
switch (alloctype) {
case CD_SET_DEFAULT:
@@ -2851,21 +2859,6 @@ static CustomDataLayer *customData_add_layer__internal(CustomData *data,
break;
}
- /* Some layer types only support a single layer. */
- const bool reuse_existing_layer = !typeInfo->defaultname && CustomData_has_layer(data, type);
- if (reuse_existing_layer) {
- CustomDataLayer &layer = data->layers[CustomData_get_layer_index(data, type)];
- if (layer.data != nullptr) {
- if (typeInfo->free) {
- typeInfo->free(layer.data, totelem, typeInfo->size);
- }
- MEM_SAFE_FREE(layer.data);
- }
- layer.data = newlayerdata;
- layer.flag = flag;
- return &layer;
- }
-
int index = data->totlayer;
if (index >= data->maxlayer) {
if (!customData_resize(data, CUSTOMDATA_GROW)) {