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
path: root/source
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2018-05-07 18:58:35 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2018-05-07 18:59:23 +0300
commitc09e22306add3e0e1fdff6171eb21e4fde18019e (patch)
tree95bc12ba90362d726e010d82bbe0de465a866906 /source
parentf74d85ffc8232a859b1419f5dc25b244ae04375f (diff)
Fix (unreported) memleak when copying object with some modifiers.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/modifier.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index ce04f3c31e2..19c0a083703 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -286,6 +286,13 @@ void modifiers_foreachTexLink(Object *ob, TexWalkFunc walk, void *userData)
void modifier_copyData_generic(const ModifierData *md_src, ModifierData *md_dst)
{
const ModifierTypeInfo *mti = modifierType_getInfo(md_src->type);
+
+ /* md_dst may have alredy be fully initialized with some extra allocated data,
+ * we need to free it now to avoid memleak. */
+ if (mti->freeData) {
+ mti->freeData(md_dst);
+ }
+
const size_t data_size = sizeof(ModifierData);
const char *md_src_data = ((const char *)md_src) + data_size;
char *md_dst_data = ((char *)md_dst) + data_size;