diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index cd881208abfe1cffed50515cca06e04c9b86531d..d36c33cdd73258644d45544e40e34311da751ebc 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -4974,6 +4974,7 @@ void LLAppViewer::disconnectViewer()
 	{
 		LLWorld::getInstance()->destroyClass();
 	}
+	LLVOCache::deleteSingleton();
 
 	// call all self-registered classes
 	LLDestroyClassList::instance().fireCallbacks();
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index 9603849b1090bb1c760f52cbeb7b972265819efe..367abcb40ef7da483d073afef0656edc9617e9c4 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -123,7 +123,7 @@ void LLWorld::destroyClass()
 		LLViewerRegion* region_to_delete = *region_it++;
 		removeRegion(region_to_delete->getHost());
 	}
-	LLVOCache::deleteSingleton();
+	
 	LLViewerPartSim::getInstance()->destroyClass();
 
 	mDefaultWaterTexturep = NULL ;