diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index e6ffbe157ad02097e2ad3343e42e9329693a9218..44eb4f65e82ae81d06fa8f3d7aea773d64125c99 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -172,12 +172,12 @@ bool Generator::registerableMetaType(const QByteArray &propertyType) #undef STREAM_1ARG_TEMPLATE ; foreach (const QByteArray &oneArgTemplateType, oneArgTemplates) - if (propertyType.startsWith(oneArgTemplateType + "<") && !propertyType.endsWith("&")) { + if (propertyType.startsWith(oneArgTemplateType + "<") && propertyType.endsWith(">")) { const int argumentSize = propertyType.size() - oneArgTemplateType.size() - 1 // The closing '>' - 1 // templates inside templates have an extra whitespace char to strip. - - (propertyType.at(propertyType.size() - 2) == '>' ? 1 : 0 ); + - (propertyType.at(propertyType.size() - 2) == ' ' ? 1 : 0 ); const QByteArray templateArg = propertyType.mid(oneArgTemplateType.size() + 1, argumentSize); return isBuiltinType(templateArg) || registerableMetaType(templateArg); } diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 923275d92840e62d45fd9af6f4b85d3366216580..3459bede85ca8f3b5410a94ffe66fef223106d7f 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -325,6 +325,8 @@ public slots: signals: void signalWithArray(const double[3]); void signalWithNamedArray(const double namedArray[3]); + void signalWithIterator(QList<QUrl>::iterator); + void signalWithListPointer(QList<QUrl>*); //QTBUG-31002 private slots: // for tst_Moc::preprocessorConditionals