Fix possible null pointer dereferences.

This follows up 130c2baa93.

Change-Id: I2f6c9b4f995af427cec9a2162b782039debf8564
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
This commit is contained in:
Jake Petroules 2015-12-02 00:27:49 -08:00
parent ccc6d545c2
commit 4f1b6749c3
2 changed files with 23 additions and 0 deletions

View File

@ -1208,6 +1208,12 @@ bool QIcon::hasThemeIcon(const QString &name)
*/
void QIcon::setIsMask(bool isMask)
{
if (!d) {
d = new QIconPrivate;
d->engine = new QPixmapIconEngine;
} else {
detach();
}
d->is_mask = isMask;
}
@ -1222,6 +1228,8 @@ void QIcon::setIsMask(bool isMask)
*/
bool QIcon::isMask() const
{
if (!d)
return false;
return d->is_mask;
}

View File

@ -53,6 +53,7 @@ private slots:
void actualSize2_data(); // test with 2 pixmaps with different aspect ratio
void actualSize2();
void isNull();
void isMask();
void swap();
void bestMatch();
void cacheKey();
@ -218,6 +219,20 @@ void tst_QIcon::isNull() {
QVERIFY(iconSupportedFormat.actualSize(QSize(32, 32)).isValid());
}
void tst_QIcon::isMask()
{
QIcon icon;
icon.setIsMask(true);
icon.addPixmap(QPixmap());
QVERIFY(icon.isMask());
QIcon icon2;
icon2.setIsMask(true);
QVERIFY(icon2.isMask());
icon2.setIsMask(false);
QVERIFY(!icon2.isMask());
}
void tst_QIcon::swap()
{
QPixmap p1(1, 1), p2(2, 2);