diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llviewerregion.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llvocache.cpp | 18 | 
2 files changed, 12 insertions, 7 deletions
| diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index db2dc531db..17f908d73f 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1193,6 +1193,7 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLViewerObjec  	eCacheUpdateResult result = CACHE_UPDATE_ADDED;  	if (mImpl->mCacheMap.size() > MAX_OBJECT_CACHE_ENTRIES)  	{ +		delete mImpl->mCacheMap.begin()->second ;  		mImpl->mCacheMap.erase(mImpl->mCacheMap.begin());  		result = CACHE_UPDATE_REPLACED; diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index f0b5b50feb..6d457434b5 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -621,16 +621,20 @@ void LLVOCache::readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::voca  				S32 num_entries;  				success = check_read(&apr_file, &num_entries, sizeof(S32)) ; -				for (S32 i = 0; success && i < num_entries; i++) +				if(success)  				{ -					LLVOCacheEntry* entry = new LLVOCacheEntry(&apr_file); -					if (!entry->getLocalID()) +					for (S32 i = 0; i < num_entries; i++)  					{ -						llwarns << "Aborting cache file load for " << filename << ", cache file corruption!" << llendl; -						delete entry ; -						success = false ; +						LLVOCacheEntry* entry = new LLVOCacheEntry(&apr_file); +						if (!entry->getLocalID()) +						{ +							llwarns << "Aborting cache file load for " << filename << ", cache file corruption!" << llendl; +							delete entry ; +							success = false ; +							break ; +						} +						cache_entry_map[entry->getLocalID()] = entry;  					} -					cache_entry_map[entry->getLocalID()] = entry;  				}  			}  		}		 | 
