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:
Hans Goudey
2023-09-22 12:25:07 -04:00
parent 0fbb958417
commit f7eb7ced58
2 changed files with 12 additions and 4 deletions

View File

@@ -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;
}

View File

@@ -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;
}