HLSL: Protect against some crashes
This commit is contained in:
parent
4e06d7a2bb
commit
0bb89f5809
@ -3256,7 +3256,8 @@ void HlslParseContext::decomposeStructBufferMethods(const TSourceLoc& loc, TInte
|
||||
if (argAggregate) {
|
||||
if (argAggregate->getSequence().empty())
|
||||
return;
|
||||
bufferObj = argAggregate->getSequence()[0]->getAsTyped();
|
||||
if (argAggregate->getSequence()[0])
|
||||
bufferObj = argAggregate->getSequence()[0]->getAsTyped();
|
||||
} else {
|
||||
bufferObj = arguments->getAsSymbolNode();
|
||||
}
|
||||
@ -3756,6 +3757,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
|
||||
return;
|
||||
} else {
|
||||
if (argAggregate->getSequence().size() == 0 ||
|
||||
argAggregate->getSequence()[0] == nullptr ||
|
||||
argAggregate->getSequence()[0]->getAsTyped()->getBasicType() != EbtSampler)
|
||||
return;
|
||||
}
|
||||
@ -5294,7 +5296,7 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct
|
||||
|
||||
TIntermTyped* arg0 = nullptr;
|
||||
|
||||
if (aggregate && aggregate->getSequence().size() > 0)
|
||||
if (aggregate && aggregate->getSequence().size() > 0 && aggregate->getSequence()[0])
|
||||
arg0 = aggregate->getSequence()[0]->getAsTyped();
|
||||
else if (arguments->getAsSymbolNode())
|
||||
arg0 = arguments->getAsSymbolNode();
|
||||
@ -5768,7 +5770,7 @@ void HlslParseContext::addStructBuffArguments(const TSourceLoc& loc, TIntermAggr
|
||||
std::any_of(aggregate->getSequence().begin(),
|
||||
aggregate->getSequence().end(),
|
||||
[this](const TIntermNode* node) {
|
||||
return (node->getAsTyped() != nullptr) && hasStructBuffCounter(node->getAsTyped()->getType());
|
||||
return (node && node->getAsTyped() != nullptr) && hasStructBuffCounter(node->getAsTyped()->getType());
|
||||
});
|
||||
|
||||
// Nothing to do, if we didn't find one.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user