diff options
-rw-r--r-- | src/gui/painting/qcoregraphics.mm | 2 | ||||
-rw-r--r-- | tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/gui/painting/qcoregraphics.mm b/src/gui/painting/qcoregraphics.mm index 803328c10f..3753fa4e88 100644 --- a/src/gui/painting/qcoregraphics.mm +++ b/src/gui/painting/qcoregraphics.mm @@ -157,6 +157,8 @@ NSImage *qt_mac_create_nsimage(const QIcon &icon, int defaultSize) availableSizes << QSize(defaultSize, defaultSize); foreach (QSize size, availableSizes) { QPixmap pm = icon.pixmap(size); + if (pm.isNull()) + continue; QImage image = pm.toImage(); CGImageRef cgImage = qt_mac_toCGImage(image); NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithCGImage:cgImage]; diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp index f19d7619cc..e3af0135e7 100644 --- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp +++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp @@ -136,6 +136,7 @@ private slots: void QTBUG_57404_existingMenuItemException(); #endif void taskQTBUG55966_subMenuRemoved(); + void QTBUG_58344_invalidIcon(); void platformMenu(); @@ -1594,5 +1595,14 @@ void tst_QMenuBar::taskQTBUG55966_subMenuRemoved() QTest::qWait(500); } +void tst_QMenuBar::QTBUG_58344_invalidIcon() +{ + QMenuBar menuBar; + QMenu menu("menu"); + menu.addAction(QIcon("crash.png"), "crash"); + menuBar.addMenu(&menu); + // No crash, all fine. +} + QTEST_MAIN(tst_QMenuBar) #include "tst_qmenubar.moc" |