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/displist.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/displist.c')
-rw-r--r--source/blender/blenkernel/intern/displist.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index b67335235a4..cf6f1fdeec1 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -1159,6 +1159,10 @@ static void curve_calc_modifiers_post(Depsgraph *depsgraph,
(*r_final) = NULL;
}
}
+ else if (modified != NULL) {
+ /* Prety stupid to generate that whole mesh if it's unused, yet we have to free it. */
+ BKE_id_free(NULL, modified);
+ }
}
static void displist_surf_indices(DispList *dl)
@@ -1808,6 +1812,11 @@ void BKE_displist_make_curveTypes(
do_makeDispListCurveTypes(
depsgraph, scene, ob, dispbase, for_render, for_orco, &ob->runtime.mesh_eval);
+ if (ob->runtime.mesh_eval != NULL) {
+ ob->runtime.mesh_eval->id.tag |= LIB_TAG_COPIED_ON_WRITE_EVAL_RESULT;
+ ob->runtime.is_mesh_eval_owned = true;
+ }
+
boundbox_displist_object(ob);
}