summaryrefslogtreecommitdiff
path: root/src/openvg/qpaintengine_vg.cpp
diff options
context:
space:
mode:
authorRhys Weatherley <rhys.weatherley@nokia.com>2009-11-03 08:23:18 +1000
committerRhys Weatherley <rhys.weatherley@nokia.com>2009-11-03 08:23:18 +1000
commitb72d41cf30f82c74c10c31808907cc990c86efe6 (patch)
tree502ec3abe99a1efaa3c91f1c81bf67104198ccc1 /src/openvg/qpaintengine_vg.cpp
parentc7386b14e0c9844db91ca0d2ae6bded6efa008aa (diff)
downloadqt4-tools-b72d41cf30f82c74c10c31808907cc990c86efe6.tar.gz
Protect the OpenVG engine from null QPixmapData objects
Reviewed-by: Sarah Smith
Diffstat (limited to 'src/openvg/qpaintengine_vg.cpp')
-rw-r--r--src/openvg/qpaintengine_vg.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index 8a485a088c..047d9d8e60 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -1178,6 +1178,8 @@ VGPaintType QVGPaintEnginePrivate::setBrush
case Qt::TexturePattern: {
// The brush is a texture specified by a QPixmap/QImage.
QPixmapData *pd = brush.texture().pixmapData();
+ if (!pd)
+ break; // null QPixmap
VGImage vgImg;
bool deref = false;
if (pd->pixelType() == QPixmapData::BitmapType) {
@@ -2893,6 +2895,8 @@ void qt_vg_drawVGImageStencil
void QVGPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
{
QPixmapData *pd = pm.pixmapData();
+ if (!pd)
+ return; // null QPixmap
if (pd->classId() == QPixmapData::OpenVGClass) {
Q_D(QVGPaintEngine);
QVGPixmapData *vgpd = static_cast<QVGPixmapData *>(pd);
@@ -2910,6 +2914,8 @@ void QVGPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF
void QVGPaintEngine::drawPixmap(const QPointF &pos, const QPixmap &pm)
{
QPixmapData *pd = pm.pixmapData();
+ if (!pd)
+ return; // null QPixmap
if (pd->classId() == QPixmapData::OpenVGClass) {
Q_D(QVGPaintEngine);
QVGPixmapData *vgpd = static_cast<QVGPixmapData *>(pd);
@@ -2985,6 +2991,8 @@ void QVGPaintEngine::drawPixmaps
// If the pixmap is not VG, or the transformation is projective,
// then fall back to the default implementation.
QPixmapData *pd = pixmap.pixmapData();
+ if (!pd)
+ return; // null QPixmap
if (pd->classId() != QPixmapData::OpenVGClass || !d->simpleTransform) {
QPaintEngineEx::drawPixmaps(drawingData, dataCount, pixmap, hints);
return;
@@ -3581,6 +3589,8 @@ void QVGCompositionHelper::drawCursorPixmap
// Fetch the VGImage from the pixmap if possible.
QPixmapData *pd = pixmap.pixmapData();
+ if (!pd)
+ return; // null QPixmap
if (pd->classId() == QPixmapData::OpenVGClass) {
QVGPixmapData *vgpd = static_cast<QVGPixmapData *>(pd);
if (vgpd->isValid())