summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/slang/check.cpp6
-rw-r--r--source/slang/slang.cpp3
2 files changed, 8 insertions, 1 deletions
diff --git a/source/slang/check.cpp b/source/slang/check.cpp
index 37005a21d..199e733ce 100644
--- a/source/slang/check.cpp
+++ b/source/slang/check.cpp
@@ -6603,11 +6603,15 @@ namespace Slang
candidate.subst = genSubst;
auto& checkedArgs = genSubst->args;
- int aa = 0;
+ uint32_t aa = 0;
for (auto memberRef : getMembers(genericDeclRef))
{
if (auto typeParamRef = memberRef.as<GenericTypeParamDecl>())
{
+ if (aa >= context.argCount)
+ {
+ return false;
+ }
auto arg = context.getArg(aa++);
TypeExp typeExp;
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index 359848d65..e332ef588 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -912,6 +912,9 @@ RefPtr<ModuleDecl> CompileRequest::loadModule(
if( errorCountAfter != errorCountBefore )
{
mSink.diagnose(srcLoc, Diagnostics::errorInImportedModule);
+ }
+ if (errorCountAfter)
+ {
// Something went wrong during the parsing, so we should bail out.
return nullptr;
}