fix for SH-1591: crash at LLVOCacheEntry::~LLVOCacheEntry() line 138

master
Xiaohong Bao 2011-05-18 11:46:55 -06:00
parent 79459bc9ba
commit ce554304fb
2 changed files with 9 additions and 2 deletions

View File

@ -168,10 +168,15 @@ public:
S32 getCurrentSize() const { return (S32)(mCurBufferp - mBufferp); }
S32 getBufferSize() const { return mBufferSize; }
const U8* getBuffer() const { return mBufferp; }
void reset() { mCurBufferp = mBufferp; mWriteEnabled = (mCurBufferp != NULL); }
void freeBuffer() { delete [] mBufferp; mBufferp = mCurBufferp = NULL; mBufferSize = 0; mWriteEnabled = FALSE; }
void assignBuffer(U8 *bufferp, S32 size)
{
if(mBufferp && mBufferp != bufferp)
{
freeBuffer() ;
}
mBufferp = bufferp;
mCurBufferp = bufferp;
mBufferSize = size;

View File

@ -76,6 +76,7 @@ LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file)
S32 size = -1;
BOOL success;
mDP.assignBuffer(mBuffer, 0);
success = check_read(apr_file, &mLocalID, sizeof(U32));
if(success)
{
@ -136,10 +137,11 @@ LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file)
LLVOCacheEntry::~LLVOCacheEntry()
{
if(mBuffer)
if(mBuffer != mDP.getBuffer())
{
delete[] mBuffer;
delete[] mBuffer ; //just in case
}
mDP.freeBuffer();
}