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) void QIcon::setIsMask(bool isMask)
{ {
if (!d) {
d = new QIconPrivate;
d->engine = new QPixmapIconEngine;
} else {
detach();
}
d->is_mask = isMask; d->is_mask = isMask;
} }
@ -1222,6 +1228,8 @@ void QIcon::setIsMask(bool isMask)
*/ */
bool QIcon::isMask() const bool QIcon::isMask() const
{ {
if (!d)
return false;
return d->is_mask; 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_data(); // test with 2 pixmaps with different aspect ratio
void actualSize2(); void actualSize2();
void isNull(); void isNull();
void isMask();
void swap(); void swap();
void bestMatch(); void bestMatch();
void cacheKey(); void cacheKey();
@ -218,6 +219,20 @@ void tst_QIcon::isNull() {
QVERIFY(iconSupportedFormat.actualSize(QSize(32, 32)).isValid()); 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() void tst_QIcon::swap()
{ {
QPixmap p1(1, 1), p2(2, 2); QPixmap p1(1, 1), p2(2, 2);