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:
authorCampbell Barton <ideasman42@gmail.com>2013-07-15 10:29:09 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-07-15 10:29:09 +0400
commitdc9beee3e23ff03f016c43d511719aa798a02f68 (patch)
treef7470dabc131a28c20891ae559a3760793524314 /source/blender/blenkernel/intern/customdata.c
parentbf77d35f695030506c1b70f2eb2a2f1225ce14cc (diff)
fix for error (-1 index into array) when removing customdata layers with no data, delete_customdata_layer was using layer data pointer to check weather to adjust index values (but both pointers can be NULL). Remove this code and do in customdata.c
Diffstat (limited to 'source/blender/blenkernel/intern/customdata.c')
-rw-r--r--source/blender/blenkernel/intern/customdata.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index 83685477725..c25cda3829e 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -1729,16 +1729,16 @@ bool CustomData_free_layer(CustomData *data, int type, int totelem, int index)
data->totlayer--;
/* if layer was last of type in array, set new active layer */
- if ((index >= data->totlayer) || (data->layers[index].type != type)) {
- i = CustomData_get_layer_index__notypemap(data, type);
-
- if (i >= 0)
- for (; i < data->totlayer && data->layers[i].type == type; i++) {
- data->layers[i].active--;
- data->layers[i].active_rnd--;
- data->layers[i].active_clone--;
- data->layers[i].active_mask--;
- }
+ i = CustomData_get_layer_index__notypemap(data, type);
+
+ if (i != -1) {
+ CustomDataLayer *layer;
+ for (layer = &data->layers[i]; i < data->totlayer && layer->type == type; i++, layer++) {
+ if (layer->active >= index) layer->active--;
+ if (layer->active_rnd >= index) layer->active_rnd--;
+ if (layer->active_clone >= index) layer->active_clone--;
+ if (layer->active_mask >= index) layer->active_mask--;
+ }
}
if (data->totlayer <= data->maxlayer - CUSTOMDATA_GROW)