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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2010-01-19 18:15:48 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2010-01-19 18:15:48 +0300
commit7e9d9460c9857683950cab8bc492c71e4469ddb5 (patch)
tree9498576bca03758d272a132812c34d618606ba3e /source/blender/blenkernel/intern/customdata.c
parentf75301939c4f69e2144bf530cdc6a0f91e29716f (diff)
Added extra check & prints for multires data failing to write to
external file.
Diffstat (limited to 'source/blender/blenkernel/intern/customdata.c')
-rw-r--r--source/blender/blenkernel/intern/customdata.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index 78e673b9e79..fb31ed3d610 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -2347,8 +2347,10 @@ void CustomData_external_read(CustomData *data, ID *id, CustomDataMask mask, int
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 @@ void CustomData_external_write(CustomData *data, ID *id, CustomDataMask mask, in
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 @@ void CustomData_external_write(CustomData *data, ID *id, CustomDataMask mask, in
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 @@ void CustomData_external_write(CustomData *data, ID *id, CustomDataMask mask, in
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 @@ void CustomData_external_write(CustomData *data, ID *id, CustomDataMask mask, in
}
if(i != data->totlayer) {
+ fprintf(stderr, "Failed to write data to %s.\n", filename);
cdf_free(cdf);
return;
}