From 6797e80f2e69630bbd07ccb5f2cfdb97bac6332b Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Sun, 9 Jun 2019 21:11:37 +0200 Subject: Fix T65638: memory leak - modifiers on curves. We need to tag the `mesh_eval` of curve as owned, when we generate one, otherwise freeing code would not free it. --- source/blender/blenkernel/intern/mesh_convert.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source/blender/blenkernel/intern/mesh_convert.c') diff --git a/source/blender/blenkernel/intern/mesh_convert.c b/source/blender/blenkernel/intern/mesh_convert.c index f99dee7197f..dd36da44b92 100644 --- a/source/blender/blenkernel/intern/mesh_convert.c +++ b/source/blender/blenkernel/intern/mesh_convert.c @@ -1007,6 +1007,14 @@ static void curve_to_mesh_eval_ensure(Object *object) &remapped_object.runtime.mesh_eval, false); + /* Note: this is to be consistent with `BKE_displist_make_curveTypes()`, however that is not a + * real issue currently, code here is broken in more than one way, fix(es) will be done + * separately. */ + if (remapped_object.runtime.mesh_eval != NULL) { + remapped_object.runtime.mesh_eval->id.tag |= LIB_TAG_COPIED_ON_WRITE_EVAL_RESULT; + remapped_object.runtime.is_mesh_eval_owned = true; + } + BKE_object_free_curve_cache(&bevel_object); BKE_object_free_curve_cache(&taper_object); } -- cgit v1.2.3