[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26109] trunk/blender/source/blender/ blenkernel/intern/customdata.c: Added extra check & prints for multires data failing to write to
Brecht Van Lommel
brecht at blender.org
Tue Jan 19 16:15:48 CET 2010
Revision: 26109
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26109
Author: blendix
Date: 2010-01-19 16:15:48 +0100 (Tue, 19 Jan 2010)
Log Message:
-----------
Added extra check & prints for multires data failing to write to
external file.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/customdata.c
Modified: trunk/blender/source/blender/blenkernel/intern/customdata.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/customdata.c 2010-01-19 15:12:14 UTC (rev 26108)
+++ trunk/blender/source/blender/blenkernel/intern/customdata.c 2010-01-19 15:15:48 UTC (rev 26109)
@@ -2347,8 +2347,10 @@
customdata_external_filename(filename, id, external);
cdf= cdf_create(CDF_TYPE_MESH);
- if(!cdf_read_open(cdf, filename))
+ if(!cdf_read_open(cdf, filename)) {
+ fprintf(stderr, "Failed to read %s layer from %s.\n", layerType_getName(layer->type), filename);
return;
+ }
for(i=0; i<data->totlayer; i++) {
layer = &data->layers[i];
@@ -2388,6 +2390,7 @@
if(!external)
return;
+ /* test if there is anything to write */
for(i=0; i<data->totlayer; i++) {
layer = &data->layers[i];
typeInfo = layerType_getInfo(layer->type);
@@ -2400,7 +2403,9 @@
if(!update)
return;
+ /* make sure data is read before we try to write */
CustomData_external_read(data, id, mask, totelem);
+ customdata_external_filename(filename, id, external);
cdf= cdf_create(CDF_TYPE_MESH);
@@ -2408,14 +2413,22 @@
layer = &data->layers[i];
typeInfo = layerType_getInfo(layer->type);
- if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->filesize)
- cdf_layer_add(cdf, layer->type, layer->name,
- typeInfo->filesize(cdf, layer->data, totelem));
+ if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->filesize) {
+ if(layer->flag & CD_FLAG_IN_MEMORY) {
+ cdf_layer_add(cdf, layer->type, layer->name,
+ typeInfo->filesize(cdf, layer->data, totelem));
+ }
+ else {
+ cdf_free(cdf);
+ return; /* read failed for a layer! */
+ }
+ }
}
- customdata_external_filename(filename, id, external);
- if(!cdf_write_open(cdf, filename))
+ if(!cdf_write_open(cdf, filename)) {
+ fprintf(stderr, "Failed to open %s for writing.\n", filename);
return;
+ }
for(i=0; i<data->totlayer; i++) {
layer = &data->layers[i];
@@ -2434,6 +2447,7 @@
}
if(i != data->totlayer) {
+ fprintf(stderr, "Failed to write data to %s.\n", filename);
cdf_free(cdf);
return;
}
More information about the Bf-blender-cvs
mailing list