Fix: Crashes in geometry nodes group data-block polls
`geometry_node_asset_traits` can be null, that means none of the flags are set.
This commit is contained in:
@@ -1680,12 +1680,16 @@ static bool rna_NodesModifier_node_group_poll(PointerRNA * /*ptr*/, PointerRNA v
|
||||
return false;
|
||||
}
|
||||
if (ntree->id.asset_data) {
|
||||
if ((ntree->geometry_node_asset_traits->flag & GEO_NODE_ASSET_MODIFIER) == 0) {
|
||||
if (!ntree->geometry_node_asset_traits ||
|
||||
(ntree->geometry_node_asset_traits->flag & GEO_NODE_ASSET_MODIFIER) == 0)
|
||||
{
|
||||
/* Only node group assets specically marked as modifiers can be modifiers. */
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (ntree->geometry_node_asset_traits->flag & GEO_NODE_ASSET_TOOL) {
|
||||
if (ntree->geometry_node_asset_traits &&
|
||||
ntree->geometry_node_asset_traits->flag & GEO_NODE_ASSET_TOOL)
|
||||
{
|
||||
/* Tool node groups cannot be modifiers. */
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2517,13 +2517,17 @@ static bool space_node_node_geometry_nodes_tool_poll(const SpaceNode &snode,
|
||||
/* Only assets can be tools. */
|
||||
return false;
|
||||
}
|
||||
if ((ntree.geometry_node_asset_traits->flag & GEO_NODE_ASSET_TOOL) == 0) {
|
||||
if (!ntree.geometry_node_asset_traits ||
|
||||
(ntree.geometry_node_asset_traits->flag & GEO_NODE_ASSET_TOOL) == 0)
|
||||
{
|
||||
/* Only node groups specifically marked as tools can be tools. */
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (ntree.geometry_node_asset_traits->flag & GEO_NODE_ASSET_TOOL) {
|
||||
if (ntree.geometry_node_asset_traits &&
|
||||
ntree.geometry_node_asset_traits->flag & GEO_NODE_ASSET_TOOL)
|
||||
{
|
||||
/* Tool node groups cannot be modifiers. */
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user