From b056f6d7f7f33542177cc2c118743e2a8950e925 Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Thu, 8 Jul 2010 12:56:22 -0500
Subject: EXT-8236 Massage code around crash in ~LLSpatialGroup -- looks like
 heap corruption.

---
 indra/newview/llspatialpartition.cpp | 1 +
 indra/newview/llspatialpartition.h   | 2 --
 indra/newview/pipeline.cpp           | 2 +-
 indra/newview/pipeline.h             | 2 +-
 4 files changed, 3 insertions(+), 4 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index d6e9256fee..86faeeaa73 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -300,6 +300,7 @@ LLSpatialGroup::~LLSpatialGroup()
 	}
 
 	delete [] mOcclusionVerts;
+	mOcclusionVerts = NULL;
 
 	LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION);
 	clearDrawMap();
diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h
index 7896488379..48070cc438 100644
--- a/indra/newview/llspatialpartition.h
+++ b/indra/newview/llspatialpartition.h
@@ -164,8 +164,6 @@ public:
 	static BOOL sNoDelete; //deletion of spatial groups and draw info not allowed if TRUE
 
 	typedef std::vector<LLPointer<LLSpatialGroup> > sg_vector_t;
-	typedef std::set<LLPointer<LLSpatialGroup> > sg_set_t;
-	typedef std::list<LLPointer<LLSpatialGroup> > sg_list_t;
 	typedef std::vector<LLPointer<LLSpatialBridge> > bridge_list_t;
 	typedef std::vector<LLPointer<LLDrawInfo> > drawmap_elem_t; 
 	typedef std::map<U32, drawmap_elem_t > draw_map_t;	
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 3716a5e9d9..14688e4506 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1794,7 +1794,7 @@ void LLPipeline::rebuildPriorityGroups()
 	assertInitialized();
 
 	// Iterate through all drawables on the priority build queue,
-	for (LLSpatialGroup::sg_list_t::iterator iter = mGroupQ1.begin();
+	for (LLSpatialGroup::sg_vector_t::iterator iter = mGroupQ1.begin();
 		 iter != mGroupQ1.end(); ++iter)
 	{
 		LLSpatialGroup* group = *iter;
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 89649a0682..862bfc2f30 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -584,7 +584,7 @@ protected:
 	//
 	LLDrawable::drawable_list_t 	mBuildQ1; // priority
 	LLDrawable::drawable_list_t 	mBuildQ2; // non-priority
-	LLSpatialGroup::sg_list_t		mGroupQ1; //priority
+	LLSpatialGroup::sg_vector_t		mGroupQ1; //priority
 	LLSpatialGroup::sg_vector_t		mGroupQ2; // non-priority
 
 	LLViewerObject::vobj_list_t		mCreateQ;
-- 
cgit v1.2.3