fix for SH-1591: crash at LLVOCacheEntry::~LLVOCacheEntry() line 138
parent
79459bc9ba
commit
ce554304fb
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue