From 3da26ee8df6cc7e57ba3acbb91437ec97e151002 Mon Sep 17 00:00:00 2001
From: RunitaiLinden <davep@lindenlab.com>
Date: Fri, 22 Sep 2023 15:31:49 -0500
Subject: [PATCH] SL-20321 Fix for missing "has_te" check (thanks Henri)

---
 indra/newview/llgltfmateriallist.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llgltfmateriallist.cpp b/indra/newview/llgltfmateriallist.cpp
index a92e699c42a..8919229c78b 100644
--- a/indra/newview/llgltfmateriallist.cpp
+++ b/indra/newview/llgltfmateriallist.cpp
@@ -360,8 +360,8 @@ void LLGLTFMaterialList::applyOverrideMessage(LLMessageSystem* msg, const std::s
         constexpr U32 MAX_TES = 45;
         bool has_te[MAX_TES] = { false };
 
-        if (tes.isArray())
-        {
+        if (tes.isArray()) // NOTE: if no "te" array exists, this is a malformed message (null out all overrides will come in as an empty te array)
+        { 
             LLGLTFOverrideCacheEntry cache;
             cache.mLocalId = local_id;
             cache.mObjectId = id;
@@ -395,7 +395,7 @@ void LLGLTFMaterialList::applyOverrideMessage(LLMessageSystem* msg, const std::s
                 for (U32 i = 0; i < count; ++i)
                 {
                     LLTextureEntry* te = obj->getTE(i);
-                    if (te && te->getGLTFMaterialOverride())
+                    if (!has_te[i] && te && te->getGLTFMaterialOverride())
                     {
                         obj->setTEGLTFMaterialOverride(i, nullptr);
                         handle_gltf_override_message.doSelectionCallbacks(id, i);
-- 
GitLab