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 13:03:28 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-07-15 13:03:28 +0400
commitdc591a633e73452f0a22d00c23b29453f7c04724 (patch)
tree92368c6a167ed46262bd3c6ce1c81d3ae012f3c4
parent02ba328ca8a4f606deaed531274b93ed7aa8ea6f (diff)
previous commit r58256, had error in editmode (somehow it worked in most tests still).
also don't decrement active indices below zero (also a problem in 2.67).
-rw-r--r--source/blender/blenkernel/intern/customdata.c11
-rw-r--r--source/blender/editors/mesh/mesh_data.c8
2 files changed, 12 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index c25cda3829e..e08474e22c9 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -1732,12 +1732,15 @@ bool CustomData_free_layer(CustomData *data, int type, int totelem, int index)
i = CustomData_get_layer_index__notypemap(data, type);
if (i != -1) {
+ /* don't decrement zero index */
+ const int index_nonzero = index ? index : 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 (layer->active >= index_nonzero) layer->active--;
+ if (layer->active_rnd >= index_nonzero) layer->active_rnd--;
+ if (layer->active_clone >= index_nonzero) layer->active_clone--;
+ if (layer->active_mask >= index_nonzero) layer->active_mask--;
}
}
diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c
index 78f13dd3556..b825de58678 100644
--- a/source/blender/editors/mesh/mesh_data.c
+++ b/source/blender/editors/mesh/mesh_data.c
@@ -127,16 +127,18 @@ static void delete_customdata_layer(Mesh *me, CustomDataLayer *layer)
{
const int type = layer->type;
CustomData *data;
- int layer_index, tot;
+ int layer_index, tot, n;
data = mesh_customdata_get_type(me, (ELEM(type, CD_MLOOPUV, CD_MLOOPCOL)) ? BM_LOOP : BM_FACE, &tot);
layer_index = CustomData_get_layer_index(data, type);
+ n = (layer - &data->layers[layer_index]);
+ BLI_assert(n >= 0 && (n + layer_index) < data->totlayer);
if (me->edit_btmesh) {
- BM_data_layer_free_n(me->edit_btmesh->bm, data, type, layer_index + (layer - &data->layers[layer_index]));
+ BM_data_layer_free_n(me->edit_btmesh->bm, data, type, n);
}
else {
- CustomData_free_layer(data, type, tot, (layer - &data->layers[layer_index]));
+ CustomData_free_layer(data, type, tot, n);
BKE_mesh_update_customdata_pointers(me, true);
}
}