diff options
author | Loren Shih <seraph@lindenlab.com> | 2010-11-30 10:54:36 -0500 |
---|---|---|
committer | Loren Shih <seraph@lindenlab.com> | 2010-11-30 10:54:36 -0500 |
commit | e67e5cbc404d61efa4d5b3a454f55ecc194af43d (patch) | |
tree | 216459137fb0610accbdbe0445cb22ccd5bdfcd4 | |
parent | 2f83766bb71772eda19a4c7c61896c0fd7fae8a4 (diff) |
SH-435 FIXED Crash on login from infinite loop in LLVOAvatarSelf
Added additional check to prevent infinite loop.
Blind fix since we have no repro.
-rw-r--r-- | indra/newview/llvoavatarself.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 0250627d1b..5f9e343907 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -783,11 +783,19 @@ void LLVOAvatarSelf::removeMissingBakedTextures() for (U32 i = 0; i < mBakedTextureDatas.size(); i++) { const S32 te = mBakedTextureDatas[i].mTextureIndex; - LLViewerTexture* tex = getTEImage(te) ; + const LLViewerTexture* tex = getTEImage(te); + + // Replace with default if we can't find the asset, assuming the + // default is actually valid (which it should be unless something + // is seriously wrong). if (!tex || tex->isMissingAsset()) { - setTEImage(te, LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR)); - removed = TRUE; + LLViewerTexture *imagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR); + if (imagep) + { + setTEImage(te, imagep); + removed = TRUE; + } } } @@ -823,7 +831,6 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp) // << llendl; } - if (!regionp || (regionp->getHandle() != mLastRegionHandle)) { if (mLastRegionHandle != 0) |