diff options
| author | Loren Shih <seraph@lindenlab.com> | 2011-01-21 10:36:29 -0500 |
|---|---|---|
| committer | Loren Shih <seraph@lindenlab.com> | 2011-01-21 10:36:29 -0500 |
| commit | 38f4bad925214d848eccd2b5e32123afeb68984d (patch) | |
| tree | a1a21acac904ebfc5e80db226ab587af2d6558f7 /indra/newview/lltexturecache.cpp | |
| parent | eac9c45cdad9c96e621f5c84ce51062f40c09511 (diff) | |
| parent | bb3be2c07f492577254ae9ace5675eb92d10f061 (diff) | |
Automated merge up from viewer-development
Diffstat (limited to 'indra/newview/lltexturecache.cpp')
| -rw-r--r-- | indra/newview/lltexturecache.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 6a213309a0..92080d1fd7 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -1858,8 +1858,22 @@ void LLTextureCache::removeCachedTexture(const LLUUID& id) //called after mHeaderMutex is locked. void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename) { + bool file_maybe_exists = true; // Always attempt to remove when idx is invalid. + if(idx >= 0) //valid entry { + if (entry.mBodySize == 0) // Always attempt to remove when mBodySize > 0. + { + if (LLAPRFile::isExist(filename, getLocalAPRFilePool())) // Sanity check. Shouldn't exist when body size is 0. + { + LL_WARNS("TextureCache") << "Entry has body size of zero but file " << filename << " exists. Deleting this file, too." << LL_ENDL; + } + else + { + file_maybe_exists = false; + } + } + entry.mImageSize = -1; entry.mBodySize = 0; mHeaderIDMap.erase(entry.mID); @@ -1869,7 +1883,10 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename) mFreeList.insert(idx); } - LLAPRFile::remove(filename, getLocalAPRFilePool()); + if (file_maybe_exists) + { + LLAPRFile::remove(filename, getLocalAPRFilePool()); + } } bool LLTextureCache::removeFromCache(const LLUUID& id) |
