From 0bb89f5809d4116a60a1216503f9bc2f083939b2 Mon Sep 17 00:00:00 2001 From: Hodgman Date: Tue, 22 Jan 2019 13:21:11 +1100 Subject: [PATCH] HLSL: Protect against some crashes --- hlsl/hlslParseHelper.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 5069b32..92fe1aa 100644 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -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(); } @@ -3755,7 +3756,8 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType if (arguments->getAsTyped()->getBasicType() != EbtSampler) return; } else { - if (argAggregate->getSequence().size() == 0 || + 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. -- 2.7.4