Non-functional: GLSL: Fix #1242; don't pass reference to nullptr.
This commit is contained in:
parent
2f658e1f08
commit
4ee5193b53
@ -376,7 +376,8 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, TSo
|
|||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
TIntermTyped* TIntermediate::addBuiltInFunctionCall(const TSourceLoc& loc, TOperator op, bool unary, TIntermNode* childNode, const TType& returnType)
|
TIntermTyped* TIntermediate::addBuiltInFunctionCall(const TSourceLoc& loc, TOperator op, bool unary,
|
||||||
|
TIntermNode* childNode, const TType& returnType)
|
||||||
{
|
{
|
||||||
if (unary) {
|
if (unary) {
|
||||||
//
|
//
|
||||||
@ -420,7 +421,7 @@ TIntermTyped* TIntermediate::setAggregateOperator(TIntermNode* node, TOperator o
|
|||||||
//
|
//
|
||||||
// Make sure we have an aggregate. If not turn it into one.
|
// Make sure we have an aggregate. If not turn it into one.
|
||||||
//
|
//
|
||||||
if (node) {
|
if (node != nullptr) {
|
||||||
aggNode = node->getAsAggregate();
|
aggNode = node->getAsAggregate();
|
||||||
if (aggNode == nullptr || aggNode->getOp() != EOpNull) {
|
if (aggNode == nullptr || aggNode->getOp() != EOpNull) {
|
||||||
//
|
//
|
||||||
|
@ -950,7 +950,7 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
|
|||||||
if (builtIn && fnCandidate->getNumExtensions())
|
if (builtIn && fnCandidate->getNumExtensions())
|
||||||
requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str());
|
requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str());
|
||||||
|
|
||||||
if (arguments) {
|
if (arguments != nullptr) {
|
||||||
// Make sure qualifications work for these arguments.
|
// Make sure qualifications work for these arguments.
|
||||||
TIntermAggregate* aggregate = arguments->getAsAggregate();
|
TIntermAggregate* aggregate = arguments->getAsAggregate();
|
||||||
for (int i = 0; i < fnCandidate->getParamCount(); ++i) {
|
for (int i = 0; i < fnCandidate->getParamCount(); ++i) {
|
||||||
@ -988,7 +988,7 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
|
|||||||
|
|
||||||
if (builtIn && fnCandidate->getBuiltInOp() != EOpNull) {
|
if (builtIn && fnCandidate->getBuiltInOp() != EOpNull) {
|
||||||
// A function call mapped to a built-in operation.
|
// A function call mapped to a built-in operation.
|
||||||
result = handleBuiltInFunctionCall(loc, *arguments, *fnCandidate);
|
result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate);
|
||||||
} else {
|
} else {
|
||||||
// This is a function call not mapped to built-in operator.
|
// This is a function call not mapped to built-in operator.
|
||||||
// It could still be a built-in function, but only if PureOperatorBuiltins == false.
|
// It could still be a built-in function, but only if PureOperatorBuiltins == false.
|
||||||
@ -1036,20 +1036,24 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNode& arguments,
|
TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNode* arguments,
|
||||||
const TFunction& function)
|
const TFunction& function)
|
||||||
{
|
{
|
||||||
checkLocation(loc, function.getBuiltInOp());
|
checkLocation(loc, function.getBuiltInOp());
|
||||||
TIntermTyped *result = intermediate.addBuiltInFunctionCall(loc, function.getBuiltInOp(),
|
TIntermTyped *result = intermediate.addBuiltInFunctionCall(loc, function.getBuiltInOp(),
|
||||||
function.getParamCount() == 1,
|
function.getParamCount() == 1,
|
||||||
&arguments, function.getType());
|
arguments, function.getType());
|
||||||
if (obeyPrecisionQualifiers())
|
if (obeyPrecisionQualifiers())
|
||||||
computeBuiltinPrecisions(*result, function);
|
computeBuiltinPrecisions(*result, function);
|
||||||
|
|
||||||
if (result == nullptr) {
|
if (result == nullptr) {
|
||||||
error(arguments.getLoc(), " wrong operand type", "Internal Error",
|
if (arguments == nullptr)
|
||||||
"built in unary operator function. Type: %s",
|
error(loc, " wrong operand type", "Internal Error",
|
||||||
static_cast<TIntermTyped*>(&arguments)->getCompleteString().c_str());
|
"built in unary operator function. Type: %s", "");
|
||||||
|
else
|
||||||
|
error(arguments->getLoc(), " wrong operand type", "Internal Error",
|
||||||
|
"built in unary operator function. Type: %s",
|
||||||
|
static_cast<TIntermTyped*>(arguments)->getCompleteString().c_str());
|
||||||
} else if (result->getAsOperator())
|
} else if (result->getAsOperator())
|
||||||
builtInOpCheck(loc, function, *result->getAsOperator());
|
builtInOpCheck(loc, function, *result->getAsOperator());
|
||||||
|
|
||||||
|
@ -309,7 +309,7 @@ public:
|
|||||||
TFunction* handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
|
TFunction* handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
|
||||||
TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&);
|
TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&);
|
||||||
TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*);
|
TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*);
|
||||||
TIntermTyped* handleBuiltInFunctionCall(TSourceLoc, TIntermNode& arguments, const TFunction& function);
|
TIntermTyped* handleBuiltInFunctionCall(TSourceLoc, TIntermNode* arguments, const TFunction& function);
|
||||||
void computeBuiltinPrecisions(TIntermTyped&, const TFunction&);
|
void computeBuiltinPrecisions(TIntermTyped&, const TFunction&);
|
||||||
TIntermNode* handleReturnValue(const TSourceLoc&, TIntermTyped*);
|
TIntermNode* handleReturnValue(const TSourceLoc&, TIntermTyped*);
|
||||||
void checkLocation(const TSourceLoc&, TOperator);
|
void checkLocation(const TSourceLoc&, TOperator);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user