Merge pull request #1571 from dj2/result
Handle potentially uninitialized result
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 632a217..c58013b 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -2775,7 +2775,9 @@
// can still have a mapping to a SPIR-V Id.
// This includes specialization constants.
if (node->getQualifier().isConstant()) {
- return createSpvConstant(*node);
+ spv::Id result = createSpvConstant(*node);
+ if (result != spv::NoResult)
+ return result;
}
// Now, handle actual variables
@@ -7302,6 +7304,9 @@
} else if (auto* const_union_array = &sn->getConstArray()) {
int nextConst = 0;
result = createSpvConstantFromConstUnionArray(sn->getType(), *const_union_array, nextConst, true);
+ } else {
+ logger->missingFunctionality("Invalid initializer for spec onstant.");
+ return spv::NoResult;
}
builder.addName(result, sn->getName().c_str());
return result;
@@ -7310,7 +7315,6 @@
// Neither a front-end constant node, nor a specialization constant node with constant union array or
// constant sub tree as initializer.
logger->missingFunctionality("Neither a front-end constant nor a spec constant.");
- exit(1);
return spv::NoResult;
}