diff options
author | aavit <eirik.aavitsland@digia.com> | 2013-03-12 12:47:55 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-03-14 17:38:14 +0100 |
commit | 901345b79bc978e8418103b51443c0609325a202 (patch) | |
tree | 32a459bee32521dff4dd2aced95eb5e14912a90a /src/gui/painting/qrasterizer.cpp | |
parent | 82b2df405962aae03f8a4ea1cf3028fbac0eff57 (diff) |
Fixes: assert in QPainter::fillRect on very large paint devices
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 <samuel.rodal@digia.com>
(cherry picked from qtbase/db775741ed57efc16c697471f5b87689df7105a8)
Diffstat (limited to 'src/gui/painting/qrasterizer.cpp')
-rw-r--r-- | src/gui/painting/qrasterizer.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gui/painting/qrasterizer.cpp b/src/gui/painting/qrasterizer.cpp index 6db4f78a1c..18b89c19b6 100644 --- a/src/gui/painting/qrasterizer.cpp +++ b/src/gui/painting/qrasterizer.cpp @@ -877,6 +877,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]))); |