From 783a8cda2470f313f454538a149a82ea12171c74 Mon Sep 17 00:00:00 2001 From: Urvang Joshi Date: Fri, 23 Jan 2015 12:12:27 -0800 Subject: [PATCH] Regression fix for lossless decoding Reported here: https://code.google.com/p/webp/issues/detail?id=239 At the beginning of method 'DecodeImageData', pixels up to 'dec->last_pixel_' are assumed to be already cached. So, at the end of previous call to that method also, that assumption should hold true. Hence, we should cache all pixels up to 'src' regardless of 'src_last'. This affects lossless incremental decoding only, as that is when src_last and src_end differ. Note: alpha decoding is implicitly incremental, as alpha decoding of only the rows 'y_end - y_start' happens during FinishRow() call. So, this bug affects alpha decoding in non-incremental decoding flow as well. This bug was introduced in: https://gerrit.chromium.org/gerrit/#/c/59716. Change-Id: Ide6edfeb2609b02aff701e1bd9fd776da0a16be0 --- src/dec/vp8l.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dec/vp8l.c b/src/dec/vp8l.c index 916b0793..c8f2bb18 100644 --- a/src/dec/vp8l.c +++ b/src/dec/vp8l.c @@ -1073,7 +1073,7 @@ static int DecodeImageData(VP8LDecoder* const dec, uint32_t* const data, process_func(dec, row); } } - if (src < src_last) { + if (src < src_end) { if (col & mask) htree_group = GetHtreeGroupForPos(hdr, col, row); if (color_cache != NULL) { while (last_cached < src) {