diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-08-25 11:29:40 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-08-25 11:30:46 +0300 |
commit | c6d75628968818aa38b881d0bcaca7c07fc6492a (patch) | |
tree | cc13f8a614ff1cbe64e57a4d000dda0b5e661b7e /source/blender/blenkernel/intern/customdata.c | |
parent | 540f9a3b11d20e8ee75718dfd8eb5a750d1864ef (diff) |
Fix T45729: Cycles Bake break when building a special mesh
The issue was caused by CD_SHAPEKEY_INDEX layer being added to edge data,
now we make sure all the layers are nicely re-allocated.
Diffstat (limited to 'source/blender/blenkernel/intern/customdata.c')
-rw-r--r-- | source/blender/blenkernel/intern/customdata.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index 2e377195d67..3cf8730e3af 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -1504,6 +1504,23 @@ bool CustomData_merge(const struct CustomData *source, struct CustomData *dest, return changed; } +/* NOTE: Take care of referenced layers by yourself! */ +void CustomData_realloc(CustomData *data, int totelem) +{ + int i; + for (i = 0; i < data->totlayer; ++i) { + CustomDataLayer *layer = &data->layers[i]; + const LayerTypeInfo *typeInfo; + int size; + if (layer->flag & CD_FLAG_NOFREE) { + continue; + } + typeInfo = layerType_getInfo(layer->type); + size = totelem * typeInfo->size; + layer->data = MEM_reallocN(layer->data, size); + } +} + void CustomData_copy(const struct CustomData *source, struct CustomData *dest, CustomDataMask mask, int alloctype, int totelem) { |