Skip to content

Commit 7ac1c71

Browse files
Add second null check in getShaderNodes (#2229)
This changelist adds a second missing null check in getShaderNodes, handling the edge case of a mismatch in output names. Previously, this edge case would trigger a crash in MaterialXCore, and now it correctly generates validation warnings and proceeds.
1 parent e13344b commit 7ac1c71

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

source/MaterialXCore/Material.cpp

+16-13
Original file line numberDiff line numberDiff line change
@@ -92,23 +92,26 @@ vector<NodePtr> getShaderNodes(NodePtr materialNode, const string& nodeType, con
9292
if (defOutput->getType() == MATERIAL_TYPE_STRING)
9393
{
9494
OutputPtr implGraphOutput = implGraph->getOutput(defOutput->getName());
95-
for (GraphIterator it = implGraphOutput->traverseGraph().begin(); it != GraphIterator::end(); ++it)
95+
if (implGraphOutput)
9696
{
97-
ElementPtr upstreamElem = it.getUpstreamElement();
98-
if (!upstreamElem)
97+
for (GraphIterator it = implGraphOutput->traverseGraph().begin(); it != GraphIterator::end(); ++it)
9998
{
100-
it.setPruneSubgraph(true);
101-
continue;
102-
}
103-
NodePtr upstreamNode = upstreamElem->asA<Node>();
104-
if (upstreamNode && upstreamNode->getType() == MATERIAL_TYPE_STRING)
105-
{
106-
for (NodePtr shaderNode : getShaderNodes(upstreamNode, nodeType, target))
99+
ElementPtr upstreamElem = it.getUpstreamElement();
100+
if (!upstreamElem)
101+
{
102+
it.setPruneSubgraph(true);
103+
continue;
104+
}
105+
NodePtr upstreamNode = upstreamElem->asA<Node>();
106+
if (upstreamNode && upstreamNode->getType() == MATERIAL_TYPE_STRING)
107107
{
108-
if (!shaderNodeSet.count(shaderNode))
108+
for (NodePtr shaderNode : getShaderNodes(upstreamNode, nodeType, target))
109109
{
110-
shaderNodeVec.push_back(shaderNode);
111-
shaderNodeSet.insert(shaderNode);
110+
if (!shaderNodeSet.count(shaderNode))
111+
{
112+
shaderNodeVec.push_back(shaderNode);
113+
shaderNodeSet.insert(shaderNode);
114+
}
112115
}
113116
}
114117
}

0 commit comments

Comments
 (0)