summaryrefslogtreecommitdiff
path: root/indra/newview/pipeline.cpp
diff options
context:
space:
mode:
authorprep <prep@lindenlab.com>2012-05-02 11:32:11 -0400
committerprep <prep@lindenlab.com>2012-05-02 11:32:11 -0400
commit44387d5ff0ef3453204c137b4c3816a689b9f9ce (patch)
treea99fb9829719ea8e27cb6756c33f52acef4e1d8c /indra/newview/pipeline.cpp
parent9eec646601d6ce903d41dc305364373dc0a18b74 (diff)
Fix for Path-494. Teleporting with a list of renderables that needed to be restored caused a crash because the vo's had already been removed prior to the restorePermanentObjects() call.
Diffstat (limited to 'indra/newview/pipeline.cpp')
-rw-r--r--indra/newview/pipeline.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 7299f73add..fb55d954fc 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -10109,6 +10109,7 @@ void LLPipeline::hidePermanentObjects( std::vector<U32>& restoreList )
{
//This method is used to hide any vo's from the object list that may have
//the permanent flag set.
+
U32 objCnt = gObjectList.getNumObjects();
for (U32 i = 0; i < objCnt; ++i)
{
@@ -10144,13 +10145,20 @@ void LLPipeline::restorePermanentObjects( const std::vector<U32>& restoreList )
{
//This method is used to restore(unhide) any vo's from the object list that may have
//been hidden because their permanency flag was set.
+
std::vector<U32>::const_iterator itCurrent = restoreList.begin();
std::vector<U32>::const_iterator itEnd = restoreList.end();
+
+ U32 objCnt = gObjectList.getNumObjects();
while ( itCurrent != itEnd )
{
U32 index = *itCurrent;
- LLViewerObject* pObject = gObjectList.getObject( index );
+ LLViewerObject* pObject = NULL;
+ if ( index < objCnt )
+ {
+ pObject = gObjectList.getObject( index );
+ }
if ( pObject )
{
LLDrawable *pDrawable = pObject->mDrawable;