diff options
| -rw-r--r-- | source/slang/check.cpp | 6 | ||||
| -rw-r--r-- | source/slang/slang.cpp | 3 |
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; } |
