diff options
| -rw-r--r-- | indra/llmessage/lldatapacker.h | 5 | ||||
| -rw-r--r-- | indra/newview/llvocache.cpp | 6 | 
2 files changed, 9 insertions, 2 deletions
| diff --git a/indra/llmessage/lldatapacker.h b/indra/llmessage/lldatapacker.h index dd9c4eaa38..b0a638c16e 100644 --- a/indra/llmessage/lldatapacker.h +++ b/indra/llmessage/lldatapacker.h @@ -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; diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index b888a263d0..c605ddb1c8 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -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();  } | 
