From 0635b1a69dd666f5eed4b096895bd80b1a9420ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20Ca=C5=82usi=C5=84ski?= Date: Fri, 24 Apr 2015 11:26:01 +0200 Subject: [PATCH] Moc: test if superclass list is not empty before accessing first() Accessing QList().first() with an empty superclassList caused assertion fail. Added check to fix it. Change-Id: I1aff35e0d267fc0e670beadba1bd196b175a4da8 Co-authored-with: Olivier Goffart Task-number: QTBUG-45790 Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/tools/moc/moc.cpp | 3 ++- tests/auto/tools/moc/tst_moc.cpp | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp index a9e33da01d1..7300429fe03 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -140,7 +140,8 @@ bool Moc::parseClassHead(ClassDef *def) } } while (test(COMMA)); - if (knownGadgets.contains(def->superclassList.first().first)) { + if (!def->superclassList.isEmpty() + && knownGadgets.contains(def->superclassList.first().first)) { // Q_GADGET subclasses are treated as Q_GADGETs knownGadgets.insert(def->classname, def->qualified); knownGadgets.insert(def->qualified, def->qualified); diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 08dc9581e16..00e5c60b29c 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -83,6 +83,10 @@ QT_USE_NAMESPACE template struct QTBUG_31218 {}; struct QTBUG_31218_Derived : QTBUG_31218<-1<0> {}; +#if defined(Q_MOC_RUN) + class QTBUG_45790 : Bug() { }; +#endif + struct MyStruct {}; struct MyStruct2 {};