summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/tools/moc/moc.cpp5
-rw-r--r--tests/auto/tools/moc/tst_moc.cpp7
2 files changed, 12 insertions, 0 deletions
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp
index 7dd94cdca7..5534cdd6b8 100644
--- a/src/tools/moc/moc.cpp
+++ b/src/tools/moc/moc.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
+** Copyright (C) 2016 Olivier Goffart <ogoffart@woboq.com>
** Contact: http://www.qt.io/licensing/
**
** This file is part of the tools applications of the Qt Toolkit.
@@ -184,6 +185,8 @@ Type Moc::parseType()
case Q_SLOT_TOKEN:
type.name += lexem();
return type;
+ case NOTOKEN:
+ return type;
default:
prev();
break;
@@ -218,6 +221,8 @@ Type Moc::parseType()
type.name += lexem();
isVoid |= (lookup(0) == VOID);
break;
+ case NOTOKEN:
+ return type;
default:
prev();
;
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
index 9d2b883112..7f73e8f23d 100644
--- a/tests/auto/tools/moc/tst_moc.cpp
+++ b/tests/auto/tools/moc/tst_moc.cpp
@@ -1942,6 +1942,13 @@ void tst_Moc::warnings_data()
<< 1
<< QString("IGNORE_ALL_STDOUT")
<< QString(":-1: Error: Unexpected character in macro argument list.");
+
+ QTest::newRow("QTBUG-54815: Crash on invalid input")
+ << QByteArray("class M{(})F<{}d000000000000000#0")
+ << QStringList()
+ << 0
+ << QString()
+ << QString("standard input:1: Note: No relevant classes found. No output generated.");
}
void tst_Moc::warnings()