summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOz Linden <oz@lindenlab.com>2011-05-20 17:14:32 -0400
committerOz Linden <oz@lindenlab.com>2011-05-20 17:14:32 -0400
commit708b2974a9847fec822d19297e1ad6a1a84a9017 (patch)
tree7bf4016d278b908b8cd3ae47383877f2ffcba1f9
parent385b1ca609a7c6f8d4b00da178ba7dd0cbeab790 (diff)
parentce554304fbc21e8a52b236a56eea70287f002fdd (diff)
merge changes for sh-1591
-rw-r--r--indra/llmessage/lldatapacker.h5
-rw-r--r--indra/newview/llvocache.cpp6
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();
}