44 lines
1.4 KiB
Diff
44 lines
1.4 KiB
Diff
|
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 <mark.seth.fowler@gmail.com>
|
||
|
# 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
|
||
|
|