diff options
| author | Graham Madarasz <graham@lindenlab.com> | 2018-03-06 09:48:44 -0800 |
|---|---|---|
| committer | Graham Madarasz <graham@lindenlab.com> | 2018-03-06 09:48:44 -0800 |
| commit | b9016f99f3abf8b135942e60a5a2d8cd8f0f4e75 (patch) | |
| tree | 7e0dc18306309254b5d8cd5f40ac6ce897409242 /indra/newview/lltexturefetch.cpp | |
| parent | f8134b152d1a7273e27a224eac11d52c0a6f94c9 (diff) | |
| parent | af9069edbff9df73cd75753b696aabd1ae8769b5 (diff) | |
Merged lindenlab/viewer-cougar into default
Diffstat (limited to 'indra/newview/lltexturefetch.cpp')
| -rw-r--r-- | indra/newview/lltexturefetch.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index f917faadd4..1f7796e6d0 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -1760,7 +1760,17 @@ bool LLTextureFetchWorker::doWork(S32 param) mRequestedSize -= src_offset; // Make requested values reflect useful part mRequestedOffset += src_offset; } - + + U8 * buffer = (U8 *)ALLOCATE_MEM(LLImageBase::getPrivatePool(), total_size); + if (!buffer) + { + // abort. If we have no space for packet, we have not enough space to decode image + setState(DONE); + LL_WARNS(LOG_TXT) << mID << " abort: out of memory" << LL_ENDL; + releaseHttpSemaphore(); + return true; + } + if (mFormattedImage.isNull()) { // For now, create formatted image based on extension @@ -1780,10 +1790,10 @@ bool LLTextureFetchWorker::doWork(S32 param) { mFileSize = total_size + 1 ; //flag the file is not fully loaded. } - - U8 * buffer = (U8 *) ALLOCATE_MEM(LLImageBase::getPrivatePool(), total_size); + if (cur_size > 0) { + // Copy previously collected data into buffer memcpy(buffer, mFormattedImage->getData(), cur_size); } mHttpBufferArray->read(src_offset, (char *) buffer + cur_size, append_size); |
