fix for MAINT-1955: Viewer crashes while login after clearing cache

meow-7.2.2
Xiaohong Bao 2012-11-26 17:27:25 -07:00
parent cca22d608d
commit a1c52b7cd1
1 changed files with 13 additions and 2 deletions

View File

@ -1861,7 +1861,12 @@ LLPointer<LLImageRaw> LLTextureCache::readFromFastCache(const LLUUID& id, S32& d
mFastCachep->seek(APR_SET, offset);
llassert_always(mFastCachep->read(head, TEXTURE_FAST_CACHE_ENTRY_OVERHEAD) == TEXTURE_FAST_CACHE_ENTRY_OVERHEAD);
if(mFastCachep->read(head, TEXTURE_FAST_CACHE_ENTRY_OVERHEAD) != TEXTURE_FAST_CACHE_ENTRY_OVERHEAD)
{
//cache corrupted or under thread race condition
closeFastCache();
return NULL;
}
S32 image_size = head[0] * head[1] * head[2];
if(!image_size) //invalid
@ -1872,7 +1877,13 @@ LLPointer<LLImageRaw> LLTextureCache::readFromFastCache(const LLUUID& id, S32& d
discardlevel = head[3];
data = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), image_size);
llassert_always(mFastCachep->read(data, image_size) == image_size);
if(mFastCachep->read(data, image_size) != image_size)
{
FREE_MEM(LLImageBase::getPrivatePool(), data);
closeFastCache();
return NULL;
}
closeFastCache();
}
LLPointer<LLImageRaw> raw = new LLImageRaw(data, head[0], head[1], head[2], true);