Copied from: https://hg.mozilla.org/releases/mozilla-esr38/rev/8bfaa27698ca Mozilla Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1146335 # HG changeset patch # User Seth Fowler # Date 1428627143 25200 # Node ID 8bfaa27698ca0720d5c9f3910ab7148b38db0625 # Parent 9d14787bd10e6f3013263a2cae0bcc78bebde1db Bug 1146335 (Part 2) - Fix an off-by-one error in image::Downscaler. r=tn a=lizzard diff --git a/image/src/Downscaler.cpp b/image/src/Downscaler.cpp --- a/image/src/Downscaler.cpp +++ b/image/src/Downscaler.cpp @@ -160,20 +160,26 @@ Downscaler::CommitRow() int32_t inLineToRead = filterOffset + mLinesInBuffer; MOZ_ASSERT(mCurrentInLine <= inLineToRead, "Reading past end of input"); if (mCurrentInLine == inLineToRead) { skia::ConvolveHorizontally(mRowBuffer.get(), *mXFilter, mWindow[mLinesInBuffer++], mHasAlpha, /* use_sse2 = */ true); } - while (mLinesInBuffer == filterLength && - mCurrentOutLine < mTargetSize.height) { + MOZ_ASSERT(mCurrentOutLine < mTargetSize.height, + "Writing past end of output"); + + while (mLinesInBuffer == filterLength) { DownscaleInputLine(); + if (mCurrentOutLine == mTargetSize.height) { + break; // We're done. + } + GetFilterOffsetAndLength(mYFilter, mCurrentOutLine, &filterOffset, &filterLength); } mCurrentInLine += 1; } bool