[Bf-blender-cvs] [e772087ed66] master: Fix T98753: Outliner Unlink material in Blender File mode crashes

Julian Eisel noreply at git.blender.org
Tue Jun 14 16:22:06 CEST 2022


Commit: e772087ed664ffcc230850837558415cc9015f71
Author: Julian Eisel
Date:   Tue Jun 14 15:51:03 2022 +0200
Branches: master
https://developer.blender.org/rBe772087ed664ffcc230850837558415cc9015f71

Fix T98753: Outliner Unlink material in Blender File mode crashes

This issue was only exposed by ba49345705a3. The ID pointer of the
material's parent tree-element wasn't actually pointing to an ID, but to
the list-base containing the IDs. It was just unlikely to cause issues
in practice, although an assert was thrown.

Just don't do anything if the object or object-data to unlink the
material from could not be found. The following commit will introduce a
error message about this.

===================================================================

M	source/blender/editors/space_outliner/outliner_tools.cc

===================================================================

diff --git a/source/blender/editors/space_outliner/outliner_tools.cc b/source/blender/editors/space_outliner/outliner_tools.cc
index 475d02020d0..5c7b0732beb 100644
--- a/source/blender/editors/space_outliner/outliner_tools.cc
+++ b/source/blender/editors/space_outliner/outliner_tools.cc
@@ -229,6 +229,12 @@ static void unlink_material_fn(bContext *UNUSED(C),
                                TreeStoreElem *UNUSED(tselem),
                                void *UNUSED(user_data))
 {
+  if (!tsep || !TSE_IS_REAL_ID(tsep)) {
+    /* Valid case, no parent element of the material or it is not an ID (could be a #TSE_ID_BASE
+     * for example) so there's no data to unlink from. */
+    return;
+  }
+
   Material **matar = nullptr;
   int a, totcol = 0;



More information about the Bf-blender-cvs mailing list