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:
authorRobert Guetzkow <gitcommit@outlook.de>2021-01-26 14:41:47 +0300
committerRobert Guetzkow <gitcommit@outlook.de>2021-01-26 14:41:47 +0300
commit74633c0456b62b35a925c45cbff30508e53e86e9 (patch)
tree80202d41232849f4b789e38a1a8b0be0c7e2a56b /source/blender/blenkernel
parentf066cee92fe8dec37c50618b499e20dfd7c11249 (diff)
parentc399651637a3a9c8e416b8baffc571fa8cfa571f (diff)
Merge branch 'blender-v2.92-release'
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/customdata.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index 5d61b1165ed..446ef12574d 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -5104,6 +5104,10 @@ void CustomData_blend_write(BlendWriter *writer,
const int *layer_data = layer->data;
BLO_write_raw(writer, sizeof(*layer_data) * count, layer_data);
}
+ else if (layer->type == CD_PROP_BOOL) {
+ const bool *layer_data = layer->data;
+ BLO_write_raw(writer, sizeof(*layer_data) * count, layer_data);
+ }
else {
const char *structname;
int structnum;
@@ -5193,6 +5197,16 @@ void CustomData_blend_read(BlendDataReader *reader, CustomData *data, int count)
if (CustomData_verify_versions(data, i)) {
BLO_read_data_address(reader, &layer->data);
+ if (layer->data == NULL) {
+ /* Usually this should never happen, except when a custom data layer has not been written
+ * to a file correctly. */
+ CLOG_WARN(&LOG, "Reallocating custom data layer that was not saved correctly.");
+ const LayerTypeInfo *info = layerType_getInfo(layer->type);
+ layer->data = MEM_calloc_arrayN((size_t)count, info->size, layerType_getName(layer->type));
+ if (info->set_default) {
+ info->set_default(layer->data, count);
+ }
+ }
if (layer->type == CD_MDISPS) {
blend_read_mdisps(reader, count, layer->data, layer->flag & CD_FLAG_EXTERNAL);
}