[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58260] trunk/blender/source/blender: previous commit r58256, had error in editmode ( somehow it worked in most tests still).

Campbell Barton ideasman42 at gmail.com
Mon Jul 15 11:03:28 CEST 2013


Revision: 58260
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58260
Author:   campbellbarton
Date:     2013-07-15 09:03:28 +0000 (Mon, 15 Jul 2013)
Log Message:
-----------
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).

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58256

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/customdata.c
    trunk/blender/source/blender/editors/mesh/mesh_data.c

Modified: trunk/blender/source/blender/blenkernel/intern/customdata.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/customdata.c	2013-07-15 08:32:13 UTC (rev 58259)
+++ trunk/blender/source/blender/blenkernel/intern/customdata.c	2013-07-15 09:03:28 UTC (rev 58260)
@@ -1732,12 +1732,15 @@
 	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--;
 		}
 	}
 

Modified: trunk/blender/source/blender/editors/mesh/mesh_data.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_data.c	2013-07-15 08:32:13 UTC (rev 58259)
+++ trunk/blender/source/blender/editors/mesh/mesh_data.c	2013-07-15 09:03:28 UTC (rev 58260)
@@ -127,16 +127,18 @@
 {
 	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);
 	}
 }




More information about the Bf-blender-cvs mailing list