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
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2019-06-09 22:11:37 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-06-09 22:11:37 +0300
commit6797e80f2e69630bbd07ccb5f2cfdb97bac6332b (patch)
tree81f17dcd10577262dff2fa889f02075e60409e59 /source/blender/blenkernel/intern/mesh_convert.c
parent8452673a0189b66e79508cf3b6a0d856aee62366 (diff)
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.
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_convert.c')
-rw-r--r--source/blender/blenkernel/intern/mesh_convert.c8
1 files changed, 8 insertions, 0 deletions
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);
}