From 03d258d61335cfca326543a3d13b082597cfba2a Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 27 Jul 2017 16:28:16 +0200 Subject: [PATCH] Copy on write: Prevent crash when duplicating object with particle system Transform system was using global main, which might have been pointing to a freed scene layer. --- source/blender/editors/transform/transform_conversions.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 06c38a8abcc..72218c4043f 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -5553,10 +5553,14 @@ static void set_trans_object_base_flags(TransInfo *t) DEG_scene_relations_update(G.main, t->scene); /* handle pending update events, otherwise they got copied below */ + EvaluationContext eval_ctx; + DEG_evaluation_context_init_from_scene(&eval_ctx, + t->scene, t->scene_layer, + DAG_EVAL_VIEWPORT); for (base = sl->object_bases.first; base; base = base->next) { if (base->object->recalc & OB_RECALC_ALL) { /* TODO(sergey): Ideally, it's not needed. */ - BKE_object_handle_update(G.main->eval_ctx, t->scene, base->object); + BKE_object_handle_update(&eval_ctx, t->scene, base->object); } }