diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 87b6304f9ddf250efdd5ac7a1a7b82f6290279f0..d9da9eb4763a04236cf06da5269b39ba79bde263 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -1633,8 +1633,8 @@ void LLTextureCache::purgeTextures(bool validate)
 		{
 			purge_count++;
 	 		LL_DEBUGS("TextureCache") << "PURGING: " << filename << LL_ENDL;
-			removeEntry(idx, entries[idx], filename) ;
 			cache_size -= entries[idx].mBodySize;
+			removeEntry(idx, entries[idx], filename) ;			
 		}
 	}
 
@@ -1871,13 +1871,12 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
 			  file_maybe_exists = false;
 		  }
 		}
+		mTexturesSizeTotal -= entry.mBodySize;
 
 		entry.mImageSize = -1;
 		entry.mBodySize = 0;
 		mHeaderIDMap.erase(entry.mID);
-		mTexturesSizeMap.erase(entry.mID);
-
-		mTexturesSizeTotal -= entry.mBodySize;
+		mTexturesSizeMap.erase(entry.mID);		
 		mFreeList.insert(idx);	
 	}