From c09e22306add3e0e1fdff6171eb21e4fde18019e Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 7 May 2018 17:58:35 +0200 Subject: Fix (unreported) memleak when copying object with some modifiers. --- source/blender/blenkernel/intern/modifier.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source') 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; -- cgit v1.2.3