diff --git a/indra/newview/llmaterialmgr.cpp b/indra/newview/llmaterialmgr.cpp index 1daeedb8b0ca1d0908180615760042f746bebc56..3dd60f5dc3c9578aa5b7411fe9d49ad5f17700ef 100644 --- a/indra/newview/llmaterialmgr.cpp +++ b/indra/newview/llmaterialmgr.cpp @@ -233,7 +233,8 @@ const LLMaterialPtr LLMaterialMgr::setMaterial(const LLUUID& region_id, const LL material_map_t::const_iterator itMaterial = mMaterials.find(material_id); if (mMaterials.end() == itMaterial) { - std::pair<material_map_t::const_iterator, bool> ret = mMaterials.insert(std::pair<LLMaterialID, LLMaterialPtr>(material_id, new LLMaterial(material_data))); + LLMaterialPtr newMaterial(new LLMaterial(material_data)); + std::pair<material_map_t::const_iterator, bool> ret = mMaterials.insert(std::pair<LLMaterialID, LLMaterialPtr>(material_id, newMaterial)); itMaterial = ret.first; } @@ -615,12 +616,16 @@ void LLMaterialMgr::onRegionRemoved(LLViewerRegion* regionp) // Get mGetQueue.erase(region_id); - for (get_pending_map_t::const_iterator itPending = mGetPending.begin(); itPending != mGetPending.end();) + for (get_pending_map_t::iterator itPending = mGetPending.begin(); itPending != mGetPending.end();) { if (region_id == itPending->first.first) + { mGetPending.erase(itPending++); + } else + { ++itPending; + } } // Get all diff --git a/indra/newview/llmaterialmgr.h b/indra/newview/llmaterialmgr.h index 5a0064ae272c4fcafc3ffb62cce3fed4004c8f35..0b7217445a1505fbdc980d65d20d75416c0cd4b6 100644 --- a/indra/newview/llmaterialmgr.h +++ b/indra/newview/llmaterialmgr.h @@ -35,7 +35,7 @@ class LLViewerRegion; class LLMaterialMgr : public LLSingleton<LLMaterialMgr> { - friend LLSingleton<LLMaterialMgr>; + friend class LLSingleton<LLMaterialMgr>; protected: LLMaterialMgr(); virtual ~LLMaterialMgr(); @@ -69,8 +69,8 @@ class LLMaterialMgr : public LLSingleton<LLMaterialMgr> typedef std::set<LLMaterialID> material_queue_t; typedef std::map<LLUUID, material_queue_t> get_queue_t; get_queue_t mGetQueue; - typedef std::pair<LLUUID, LLMaterialID> pending_material_t; - typedef std::map<pending_material_t, F64> get_pending_map_t; + typedef std::pair<const LLUUID, LLMaterialID> pending_material_t; + typedef std::map<const pending_material_t, F64> get_pending_map_t; get_pending_map_t mGetPending; typedef std::map<LLMaterialID, get_callback_t*> get_callback_map_t; get_callback_map_t mGetCallbacks;