diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2025-04-29 17:09:19 +0300 | 
|---|---|---|
| committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2025-04-29 18:12:57 +0300 | 
| commit | d9e55c44152064133796bfb08f1da524387c1300 (patch) | |
| tree | dff31bea70c1cbce20f6530ef40bae0270c47555 | |
| parent | fdda524ee1395c7dd5d5f65ce1f61c64e256c531 (diff) | |
#3997 Crash in a gltf asset enabled region
| -rw-r--r-- | indra/llrender/llglslshader.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/gltfscenemanager.cpp | 6 | 
2 files changed, 9 insertions, 3 deletions
| diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 50e40a3eb6..3735a99109 100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -1076,8 +1076,8 @@ void LLGLSLShader::bind()  void LLGLSLShader::bind(U8 variant)  { -    llassert(mGLTFVariants.size() == LLGLSLShader::NUM_GLTF_VARIANTS); -    llassert(variant < LLGLSLShader::NUM_GLTF_VARIANTS); +    llassert_always(mGLTFVariants.size() == LLGLSLShader::NUM_GLTF_VARIANTS); +    llassert_always(variant < LLGLSLShader::NUM_GLTF_VARIANTS);      mGLTFVariants[variant].bind();  } @@ -1085,7 +1085,7 @@ void LLGLSLShader::bind(bool rigged)  {      if (rigged)      { -        llassert(mRiggedVariant); +        llassert_always(mRiggedVariant);          mRiggedVariant->bind();      }      else diff --git a/indra/newview/gltfscenemanager.cpp b/indra/newview/gltfscenemanager.cpp index e0cd762776..9faead9533 100644 --- a/indra/newview/gltfscenemanager.cpp +++ b/indra/newview/gltfscenemanager.cpp @@ -643,6 +643,12 @@ void GLTFSceneManager::render(Asset& asset, U8 variant)          return;      } +    if (gGLTFPBRMetallicRoughnessProgram.mGLTFVariants.size() <= variant) +    { +        llassert(false); // mGLTFVariants should have been initialized +        return; +    } +      for (U32 ds = 0; ds < 2; ++ds)      {          RenderData& rd = asset.mRenderData[ds]; | 
