diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index b9c7ded50bddf7361a125c5d8cfe7d49311825a8..0ad4402dcc52be0f4687ca8e1b2ee01230392277 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -2097,7 +2097,7 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLDataPackerB
 			else //invisible
 			{
 				//copy some contents from old entry
-				entry->moveTo(new_entry);
+				entry->moveTo(new_entry, true);
 
 				//remove old entry
 				killCacheEntry(entry);
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index f16f3507c3306bc272481f8362f1beb35088edba..89a49ff1edce865a3fb162ba8db5db1147b0ed2a 100755
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -191,10 +191,10 @@ void LLVOCacheEntry::setOctreeEntry(LLViewerOctreeEntry* entry)
 	LLViewerOctreeEntryData::setOctreeEntry(entry);
 }
 
-void LLVOCacheEntry::moveTo(LLVOCacheEntry* new_entry)
+void LLVOCacheEntry::moveTo(LLVOCacheEntry* new_entry, bool no_entry_move)
 {
 	//copy LLViewerOctreeEntry
-	if(mEntry.notNull())
+	if(mEntry.notNull() && !no_entry_move)
 	{
 		new_entry->setOctreeEntry(mEntry);
 		mEntry = NULL;
diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h
index eef364dd5dee8ca5fa6019bce2c7005f950795d1..21b30f537301b912009c59161a171a6739c125ce 100755
--- a/indra/newview/llvocache.h
+++ b/indra/newview/llvocache.h
@@ -103,7 +103,7 @@ class LLVOCacheEntry
 	void recordHit();
 	void recordDupe() { mDupeCount++; }
 	
-	void moveTo(LLVOCacheEntry* new_entry); //copy variables 
+	void moveTo(LLVOCacheEntry* new_entry, bool no_entry_move = false); //copy variables 
 	/*virtual*/ void setOctreeEntry(LLViewerOctreeEntry* entry);
 
 	void setParentID(U32 id) {mParentID = id;}