aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoseph Wen <josephwen@google.com>2010-09-08 23:54:14 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-09-08 23:54:14 -0700
commita1414d6e9cea8b866a05dc291d9302249d2726a0 (patch)
tree38fc9bb8ad0003630bab35d7a9612d9aecc32f9b /src
parent00721022d0e7e87eae8d7baa281a1feb9566c0ac (diff)
parentea22e42026418b6b9919a94ff04930c978c4c777 (diff)
downloadexternal_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.cpp16
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;