summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2024-07-31 17:26:27 +0300
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2024-07-31 18:16:18 +0300
commitbeb177bb23af4885b2a6f16798a62d1ca9ac0a02 (patch)
tree4c685ae1b8bf5878afe081351764a7e07ad3e2ed
parentc3b678276dadb7aded8e8aeb3742524766f5ad8a (diff)
viewer#2153 Crash at LLViewerTextureList::updateImageDecodePriority
Crash at getTextureEntry which calls getTE(mTEOffset)
-rw-r--r--indra/newview/llviewertexturelist.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index d31c53d000..115934282f 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -948,7 +948,9 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
// shows one letter at a time
//
// Maximum usage examples: huge chunk of terrain repeats texture
- const LLTextureEntry* te = face->getTextureEntry();
+ S32 te_offset = face->getTEOffset(); // offset is -1 if not inited
+ LLViewerObject* objp = face->getViewerObject();
+ const LLTextureEntry* te = (te_offset < 0 || te_offset >= objp->getNumTEs()) ? nullptr : objp->getTE(te_offset);
F32 min_scale = te ? llmin(fabsf(te->getScaleS()), fabsf(te->getScaleT())) : 1.f;
min_scale = llclamp(min_scale * min_scale, texture_scale_min(), texture_scale_max());
vsize /= min_scale;