diff options
author | Joseph Wen <josephwen@google.com> | 2010-09-08 23:54:14 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-09-08 23:54:14 -0700 |
commit | a1414d6e9cea8b866a05dc291d9302249d2726a0 (patch) | |
tree | 38fc9bb8ad0003630bab35d7a9612d9aecc32f9b /src | |
parent | 00721022d0e7e87eae8d7baa281a1feb9566c0ac (diff) | |
parent | ea22e42026418b6b9919a94ff04930c978c4c777 (diff) | |
download | external_skia-a1414d6e9cea8b866a05dc291d9302249d2726a0.zip external_skia-a1414d6e9cea8b866a05dc291d9302249d2726a0.tar.gz external_skia-a1414d6e9cea8b866a05dc291d9302249d2726a0.tar.bz2 |
am ea22e420: Fix bug in SkImageDecoder.buildTileIndex()
Merge commit 'ea22e42026418b6b9919a94ff04930c978c4c777'
* commit 'ea22e42026418b6b9919a94ff04930c978c4c777':
Fix bug in SkImageDecoder.buildTileIndex()
Diffstat (limited to 'src')
-rw-r--r-- | src/images/SkJpegUtility.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/images/SkJpegUtility.cpp b/src/images/SkJpegUtility.cpp index aaf87db..a3a6bcd 100644 --- a/src/images/SkJpegUtility.cpp +++ b/src/images/SkJpegUtility.cpp @@ -134,12 +134,22 @@ skjpeg_source_mgr::skjpeg_source_mgr(SkStream* stream, SkImageDecoder* decoder, bool copyStream, bool ownStream) : fStream(stream) { fDecoder = decoder; const void* baseAddr = stream->getMemoryBase(); + size_t bufferSize = 4096; + size_t len; fMemoryBase = NULL; fUnrefStream = ownStream; if (copyStream) { - fMemoryBaseSize = stream->getLength(); - fMemoryBase = sk_malloc_throw(fMemoryBaseSize); - stream->read(fMemoryBase, fMemoryBaseSize); + fMemoryBaseSize = 0; + fMemoryBase = sk_malloc_throw(bufferSize); + while ((len = stream->read(fMemoryBase + fMemoryBaseSize, + bufferSize - fMemoryBaseSize)) != 0) { + fMemoryBaseSize += len; + if (fMemoryBaseSize == bufferSize) { + bufferSize *= 2; + fMemoryBase = sk_realloc_throw(fMemoryBase, bufferSize); + } + } + fMemoryBase = sk_realloc_throw(fMemoryBase, fMemoryBaseSize); init_source = skmem_init_source; fill_input_buffer = skmem_fill_input_buffer; |