summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2025-04-29 17:09:19 +0300
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2025-04-29 18:12:57 +0300
commitd9e55c44152064133796bfb08f1da524387c1300 (patch)
treedff31bea70c1cbce20f6530ef40bae0270c47555
parentfdda524ee1395c7dd5d5f65ce1f61c64e256c531 (diff)
#3997 Crash in a gltf asset enabled region
-rw-r--r--indra/llrender/llglslshader.cpp6
-rw-r--r--indra/newview/gltfscenemanager.cpp6
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];