Fix integer overflow for broken QPainterPaths
With some bogus input, we can end up with NaN in the bounding rects of the control points. This in turn causes problems later when it is converted to ints and used in code. To avoid it, we exit early if the rect is invalid (negative or NaN size). Pick-to: 5.15 6.2 6.3 Fixes: QTBUG-100217 Change-Id: Idbc6700b85cb30198d69fedbf8f3be3e1ab65e40 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
8275611766
commit
d6c4a3edf9
@ -1725,7 +1725,7 @@ void QRasterPaintEngine::fill(const QVectorPath &path, const QBrush &brush)
|
||||
QRectF cpRect = path.controlPointRect();
|
||||
const QRectF pathDeviceRect = s->matrix.mapRect(cpRect);
|
||||
// Skip paths that by conservative estimates are completely outside the paint device.
|
||||
if (!pathDeviceRect.intersects(QRectF(d->deviceRect)))
|
||||
if (!pathDeviceRect.intersects(QRectF(d->deviceRect)) || !pathDeviceRect.isValid())
|
||||
return;
|
||||
|
||||
ProcessSpans blend = d->getBrushFunc(pathDeviceRect, &s->brushData);
|
||||
|
Loading…
x
Reference in New Issue
Block a user