From c194af81a5b1f7d2869d9617dc06cd50609362bf Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 12 Jun 2024 09:40:27 -0700 Subject: Fix crash on invalid entrypoint varying parameter. (#4349) * Fix crash on invalid entrypoint varying parameter. * Fix test. --- source/slang/slang-parameter-binding.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'source/slang/slang-parameter-binding.cpp') diff --git a/source/slang/slang-parameter-binding.cpp b/source/slang/slang-parameter-binding.cpp index 523ba9287..bce9b5d05 100644 --- a/source/slang/slang-parameter-binding.cpp +++ b/source/slang/slang-parameter-binding.cpp @@ -2185,9 +2185,11 @@ static RefPtr processEntryPointVaryingParameter( state, fieldVarLayout); - SLANG_ASSERT(fieldTypeLayout); - if(!fieldTypeLayout) + if (!fieldTypeLayout) + { + getSink(context)->diagnose(field, Diagnostics::notValidVaryingParameter, field); continue; + } fieldVarLayout->typeLayout = fieldTypeLayout; // The field needs to have offset information stored @@ -4169,6 +4171,9 @@ ProgramLayout* TargetProgram::getOrCreateLayout(DiagnosticSink* sink) if( !m_layout ) { m_layout = generateParameterBindings(this, sink); + if (sink->getErrorCount() != 0) + return nullptr; + if( m_layout ) { m_irModuleForLayout = createIRModuleForLayout(sink); -- cgit v1.2.3