diff --git a/indra/newview/llmaterialmgr.cpp b/indra/newview/llmaterialmgr.cpp
index cb628447bf74cf821d6a4749fe258c904ea6edf5..de82ec80c8776063a19efc50cdf6e3009ae627ca 100644
--- a/indra/newview/llmaterialmgr.cpp
+++ b/indra/newview/llmaterialmgr.cpp
@@ -548,7 +548,7 @@ void LLMaterialMgr::processGetAllQueue()
 		if (regionp == NULL)
 		{
 			LL_WARNS("Materials") << "Unknown region with id " << region_id.asString() << LL_ENDL;
-			mGetAllQueue.erase(itRegion);
+			clearGetQueues(region_id);		// Invalidates region_id
 			continue;
 		}
 		else if (!regionp->capabilitiesReceived())
@@ -561,7 +561,7 @@ void LLMaterialMgr::processGetAllQueue()
 		{
 			LL_WARNS("Materials") << "Capability '" << MATERIALS_CAPABILITY_NAME
 				<< "' is not defined on the current region '" << regionp->getName() << "'" << LL_ENDL;
-			mGetAllQueue.erase(itRegion);
+			clearGetQueues(region_id);		// Invalidates region_id
 			continue;
 		}
 
@@ -647,11 +647,8 @@ void LLMaterialMgr::processPutQueue()
 	}
 }
 
-void LLMaterialMgr::onRegionRemoved(LLViewerRegion* regionp)
+void LLMaterialMgr::clearGetQueues(const LLUUID& region_id)
 {
-	const LLUUID& region_id = regionp->getRegionID();
-
-	// Get
 	mGetQueue.erase(region_id);
 	for (get_pending_map_t::iterator itPending = mGetPending.begin(); itPending != mGetPending.end();)
 	{
@@ -665,12 +662,14 @@ void LLMaterialMgr::onRegionRemoved(LLViewerRegion* regionp)
 		}
 	}
 
-	LL_DEBUGS("Materials") << regionp->getName() << " id " << region_id << LL_ENDL;
-	// Get all
 	mGetAllQueue.erase(region_id);
 	mGetAllRequested.erase(region_id);
 	mGetAllPending.erase(region_id);
 	mGetAllCallbacks.erase(region_id);
+}
 
+void LLMaterialMgr::onRegionRemoved(LLViewerRegion* regionp)
+{
+	clearGetQueues(regionp->getRegionID());
 	// Put doesn't need clearing: objects that can't be found will clean up in processPutQueue()
 }
diff --git a/indra/newview/llmaterialmgr.h b/indra/newview/llmaterialmgr.h
index 0b7217445a1505fbdc980d65d20d75416c0cd4b6..1672d11d38f9ef231eaaa2fcabe8c67bc54d0807 100644
--- a/indra/newview/llmaterialmgr.h
+++ b/indra/newview/llmaterialmgr.h
@@ -52,6 +52,7 @@ class LLMaterialMgr : public LLSingleton<LLMaterialMgr>
 	void put(const LLUUID& object_id, const U8 te, const LLMaterial& material);
 
 protected:
+	void clearGetQueues(const LLUUID& region_id);
 	bool isGetPending(const LLUUID& region_id, const LLMaterialID& material_id);
 	bool isGetAllPending(const LLUUID& region_id);
 	const LLMaterialPtr setMaterial(const LLUUID& region_id, const LLMaterialID& material_id, const LLSD& material_data);