Revision: 41399
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41399
Author: ender79
Date: 2011-10-31 00:10:51 +0000 (Mon, 31 Oct 2011)
Log Message:
-----------
Fix a minor bug with incorrect ordering of arguments to customdata api
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c
2011-10-31 00:03:18 UTC (rev 41398)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/customdata.c
2011-10-31 00:10:51 UTC (rev 41399)
@@ -1178,6 +1178,7 @@
{
/*const LayerTypeInfo *typeInfo;*/
CustomDataLayer *layer, *newlayer;
+ void *data;
int i, type, number = 0, lasttype = -1, lastactive = 0, lastrender = 0,
lastclone = 0, lastmask = 0, lastflag = 0;
for(i = 0; i < source->totlayer; ++i) {
@@ -1202,12 +1203,23 @@
else if(!((int)mask & (int)(1 << (int)type))) continue;
else if(number < CustomData_number_of_layers(dest, type))
continue;
+ switch (alloctype) {
+ case CD_ASSIGN:
+ case CD_REFERENCE:
+ case CD_DUPLICATE:
+ data = layer->data;
+ break;
+ default:
+ data = NULL;
+ break;
+ }
+
if((alloctype == CD_ASSIGN) && (lastflag & CD_FLAG_NOFREE))
newlayer = customData_add_layer__internal(dest, type,
CD_REFERENCE,
- layer->data, totelem, layer->name);
+ data, totelem, layer->name);
else
newlayer = customData_add_layer__internal(dest, type,
alloctype,
- layer->data, totelem, layer->name);
+ data, totelem, layer->name);
if(newlayer) {
newlayer->uid = layer->uid;
@@ -1515,6 +1527,13 @@
int size = typeInfo->size * totelem, flag = 0, index = data->totlayer;
void *newlayerdata;
+ /* Passing a layerdata to copy from with an alloctype that won't copy is
+ most likely a bug */
+ BLI_assert(!layerdata ||
+ (alloctype == CD_ASSIGN) ||
+ (alloctype == CD_DUPLICATE) ||
+ (alloctype == CD_REFERENCE));
+
if (!typeInfo->defaultname && CustomData_has_layer(data, type))
return &data->layers[CustomData_get_layer_index(data, type)];
@@ -2308,13 +2327,13 @@
int i;
for(i=0; i < fdata->totlayer; i++){
if(fdata->layers[i].type == CD_MTFACE){
- CustomData_add_layer(pdata, CD_MTEXPOLY, CD_CALLOC,
&(fdata->layers[i].name), totpoly);
- CustomData_add_layer(ldata, CD_MLOOPUV, CD_CALLOC,
&(fdata->layers[i].name), totloop);
+ CustomData_add_layer_named(pdata, CD_MTEXPOLY,
CD_CALLOC, NULL, totpoly, fdata->layers[i].name);
+ CustomData_add_layer_named(ldata, CD_MLOOPUV,
CD_CALLOC, NULL, totloop, fdata->layers[i].name);
}
else if(fdata->layers[i].type == CD_MCOL)
- CustomData_add_layer(ldata, CD_MLOOPCOL, CD_CALLOC,
&(fdata->layers[i].name), totloop);
+ CustomData_add_layer_named(ldata, CD_MLOOPCOL,
CD_CALLOC, NULL, totloop, fdata->layers[i].name);
else if(fdata->layers[i].type == CD_MDISPS)
- CustomData_add_layer(ldata, CD_MDISPS, CD_CALLOC,
&(fdata->layers[i].name), totloop);
+ CustomData_add_layer_named(ldata, CD_MDISPS, CD_CALLOC,
NULL, totloop, fdata->layers[i].name);
}
}
void CustomData_from_bmeshpoly(CustomData *fdata, CustomData *pdata,
CustomData *ldata, int total){
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs