summaryrefslogtreecommitdiff
path: root/indra/newview/llflexibleobject.cpp
diff options
context:
space:
mode:
authorNyx (Neal Orman) <nyx@lindenlab.com>2011-02-17 13:52:58 -0500
committerNyx (Neal Orman) <nyx@lindenlab.com>2011-02-17 13:52:58 -0500
commit019585ed6c761a32b5d06990d7cf55388905113a (patch)
treee2bf9bdcbc7c85a12fe5dd214c41a73817114375 /indra/newview/llflexibleobject.cpp
parentf546f06452f453cf062d166ddebefd98afbd118b (diff)
SH-959 FIX crash in llflexibleobject.cpp
Crash was a result of one of two possibilities: 1) trying to update geometry when it wasn't visible 2) mSimulateRes was non-zero when mInitialized was 0 Put code to handle both cases - initialize if mSimulateRes is 0 OR mInitialized is 0 But only do so if the object is visible. If the object is not visible, early out. Code reviewed by davep
Diffstat (limited to 'indra/newview/llflexibleobject.cpp')
-rw-r--r--indra/newview/llflexibleobject.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
index 689fa72958..bd939d8636 100644
--- a/indra/newview/llflexibleobject.cpp
+++ b/indra/newview/llflexibleobject.cpp
@@ -366,7 +366,7 @@ void LLVolumeImplFlexible::doFlexibleUpdate()
LLFastTimer ftm(FTM_DO_FLEXIBLE_UPDATE);
LLVolume* volume = mVO->getVolume();
LLPath *path = &volume->getPath();
- if (mSimulateRes == 0 && mVO->mDrawable->isVisible())
+ if ((mSimulateRes == 0 || !mInitialized) && mVO->mDrawable->isVisible())
{
mVO->markForUpdate(TRUE);
if (!doIdleUpdate(gAgent, *LLWorld::getInstance(), 0.0))
@@ -375,6 +375,11 @@ void LLVolumeImplFlexible::doFlexibleUpdate()
}
}
+ if (!mVO->mDrawable->isVisible())
+ {
+ return;
+ }
+
llassert_always(mInitialized);
S32 num_sections = 1 << mSimulateRes;