Fix (unreported) memleak when copying object with some modifiers.
authorBastien Montagne <montagne29@wanadoo.fr>
Mon, 7 May 2018 15:58:35 +0000 (17:58 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Mon, 7 May 2018 15:59:23 +0000 (17:59 +0200)
source/blender/blenkernel/intern/modifier.c

index ce04f3c31e25f752bffe60a52c49d5258a26d903..19c0a083703e18e7db3d51a661aa28bf7c59b51b 100644 (file)
@@ -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;