diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index b274653f..894b3854 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -1063,13 +1063,17 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op return subTree; }; - - const auto& leftVariables = flattenMap[left->getAsSymbolNode()->getId()]; - const auto& rightVariables = flattenMap[right->getAsSymbolNode()->getId()]; + + TVector* leftVariables = nullptr; + TVector* rightVariables = nullptr; + if (flattenLeft) + leftVariables = &flattenMap[left->getAsSymbolNode()->getId()]; + if (flattenRight) + rightVariables = &flattenMap[right->getAsSymbolNode()->getId()]; TIntermAggregate* assignList = nullptr; for (int member = 0; member < (int)members.size(); ++member) { - TIntermTyped* subRight = getMember(flattenRight, right, rightVariables, member); - TIntermTyped* subLeft = getMember(flattenLeft, left, leftVariables, member); + TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, member); + TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member); assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc)); } assignList->setOperator(EOpSequence);