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 <bastien@blender.org>2022-05-19 13:04:07 +0300
committerBastien Montagne <bastien@blender.org>2022-05-19 13:04:07 +0300
commit4fc96e5000ce037b0247199e2c9fc440fbcc713f (patch)
tree3fb955f92ce61478faf6c68d25c05485352fc98b /source/blender/blenkernel
parentf4cbfaded657886efa373a1fdbb45042be8e6c5c (diff)
parent24745e8d27903ae741565c5e15f147d206a1030e (diff)
Merge branch 'blender-v3.2-release'
Conflicts: source/blender/blenkernel/intern/lib_override.c
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/lib_override.c16
-rw-r--r--source/blender/blenkernel/intern/mesh_convert.cc9
2 files changed, 17 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index 608c3949858..6dd13952413 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -2349,13 +2349,15 @@ static int lib_override_sort_libraries_func(LibraryIDLinkCallbackData *cb_data)
if (id != NULL && ID_IS_LINKED(id) && id->lib != id_owner->lib) {
const int owner_library_indirect_level = ID_IS_LINKED(id_owner) ? id_owner->lib->temp_index :
0;
- if (owner_library_indirect_level > 10000) {
- CLOG_ERROR(
- &LOG,
- "Levels of indirect usages of libraries is way too high, skipping further building "
- "loops (Involves at least '%s' and '%s')",
- id_owner->lib->filepath,
- id->lib->filepath);
+ if (owner_library_indirect_level > 200) {
+ CLOG_ERROR(&LOG,
+ "Levels of indirect usages of libraries is way too high, there are most likely "
+ "dependency loops, skipping further building loops (involves at least '%s' from "
+ "'%s' and '%s' from '%s')",
+ id_owner->name,
+ id_owner->lib->filepath,
+ id->name,
+ id->lib->filepath);
return IDWALK_RET_NOP;
}
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);
+ }
}
/**