Fix T96844: Crash when switching workspaces and outliner modes
Error exposed byba49345705
. Code just assumed that the tree-element pointed to a real ID, but this is often not the case, and the ID pointer contains completely different data. E.g. beforeba49345705
, it would be a pointer to one of the `Main` listbases, so this code would have undefined behavior. Now the pointer is null for elements in the "Current File" element, causing a null-pointer dereference rather than undefined behavior (that just happened to virtually always result in the intended code path).
This commit is contained in:
@@ -712,7 +712,8 @@ static void outliner_add_id_contents(SpaceOutliner *space_outliner,
|
||||
else {
|
||||
/* do not extend Armature when we have posemode */
|
||||
tselem = TREESTORE(te->parent);
|
||||
if (GS(tselem->id->name) == ID_OB && ((Object *)tselem->id)->mode & OB_MODE_POSE) {
|
||||
if (TSE_IS_REAL_ID(tselem) && GS(tselem->id->name) == ID_OB &&
|
||||
((Object *)tselem->id)->mode & OB_MODE_POSE) {
|
||||
/* pass */
|
||||
}
|
||||
else {
|
||||
|
Reference in New Issue
Block a user