diff options
author | Bastien Montagne <bastien@blender.org> | 2022-05-19 13:04:07 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-05-19 13:04:07 +0300 |
commit | 4fc96e5000ce037b0247199e2c9fc440fbcc713f (patch) | |
tree | 3fb955f92ce61478faf6c68d25c05485352fc98b /source/blender/blenkernel/intern/mesh_convert.cc | |
parent | f4cbfaded657886efa373a1fdbb45042be8e6c5c (diff) | |
parent | 24745e8d27903ae741565c5e15f147d206a1030e (diff) |
Merge branch 'blender-v3.2-release'
Conflicts:
source/blender/blenkernel/intern/lib_override.c
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_convert.cc')
-rw-r--r-- | source/blender/blenkernel/intern/mesh_convert.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/mesh_convert.cc b/source/blender/blenkernel/intern/mesh_convert.cc index 07c9bccacc3..97eafb75102 100644 --- a/source/blender/blenkernel/intern/mesh_convert.cc +++ b/source/blender/blenkernel/intern/mesh_convert.cc @@ -890,8 +890,15 @@ static void object_for_curve_to_mesh_free(Object *temp_object) curve.editnurb = nullptr; } - BKE_id_free(nullptr, temp_object->data); + /* Only free the final object data if it is *not* stored in the #data_eval field. This is still + * necessary because #temp_object's data could be replaced by a #Curve data-block that isn't also + * assigned to #data_eval. */ + const bool object_data_stored_in_data_eval = final_object_data == temp_object->runtime.data_eval; + BKE_id_free(nullptr, temp_object); + if (!object_data_stored_in_data_eval) { + BKE_id_free(nullptr, final_object_data); + } } /** |