summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEirik Aavitsland <eirik.aavitsland@qt.io>2018-04-05 13:02:35 +0200
committerEirik Aavitsland <eirik.aavitsland@qt.io>2018-04-19 11:04:06 +0000
commitbe78baa165e238c1a3febe21ebaf7cacc133d48b (patch)
tree526e9118c0eba951b60e4ac95540ad4e5c0e11c7
parentedc7aec065356b9f58ce82a038cca092cad76e2d (diff)
Fix crash if QPixmap::defaultDepth() is called when no QGuiApplication
This static method can be called before QGuiApplication is created. At that point there is yet no primary screen, so the implementation needs to guard against dereferencing a nullptr. Task-number: QTBUG-67309 Change-Id: I6b7b9e97b1c3c79bf2f9c6d6247c3b10f39f7a55 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit 7f782e1fc41ff7694f9bf7434d5a4db0545c0413)
-rw-r--r--src/gui/image/qpixmap.cpp8
-rw-r--r--tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp2
2 files changed, 9 insertions, 1 deletions
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 0aa05a04e2..ccbd9fda53 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -1534,12 +1534,18 @@ QBitmap QPixmap::mask() const
On all platforms the depth of the primary screen will be returned.
+ \note QGuiApplication must be created before calling this function.
+
\sa depth(), QColormap::depth(), {QPixmap#Pixmap Information}{Pixmap Information}
*/
int QPixmap::defaultDepth()
{
- return QGuiApplication::primaryScreen()->depth();
+ QScreen *primary = QGuiApplication::primaryScreen();
+ if (Q_LIKELY(primary))
+ return primary->depth();
+ qWarning("QPixmap: QGuiApplication must be created before calling defaultDepth().");
+ return 0;
}
/*!
diff --git a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
index a935258fb8..4548bb6a54 100644
--- a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
+++ b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
@@ -1070,6 +1070,8 @@ void tst_QGuiApplication::staticFunctions()
QGuiApplication::setQuitOnLastWindowClosed(true);
QGuiApplication::quitOnLastWindowClosed();
QGuiApplication::applicationState();
+
+ QPixmap::defaultDepth();
}
void tst_QGuiApplication::settableStyleHints_data()