From db775741ed57efc16c697471f5b87689df7105a8 Mon Sep 17 00:00:00 2001 From: aavit Date: Tue, 12 Mar 2013 12:47:55 +0100 Subject: [PATCH] Fixes: assert in QPainter::fillRect on very large paint devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For devices taller than 32768, fillRect with linear gradient would go below the cliprect. Task-number: QTBUG-26766 Change-Id: I516ede1545909e9ce2de5812c61bb473f99f5759 Reviewed-by: Samuel Rødal --- src/gui/painting/qrasterizer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/painting/qrasterizer.cpp b/src/gui/painting/qrasterizer.cpp index 8483a05d60..a6be7c6c78 100644 --- a/src/gui/painting/qrasterizer.cpp +++ b/src/gui/painting/qrasterizer.cpp @@ -891,6 +891,8 @@ void QRasterizer::rasterizeLine(const QPointF &a, const QPointF &b, qreal width, const Q16Dot16 rowHeight = qMin(yFP + Q16Dot16Factor, yPb) - qMax(yFP, yPa); const int y = Q16Dot16ToInt(yFP); + if (y > d->clipRect.bottom()) + break; for (int i = 0; i < n; ++i) { buffer.addSpan(x[i], len[i], y, Q16Dot16ToInt(Q16Dot16Multiply(rowHeight, coverage[i])));