diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp index 5dd86d4b0e4..a2719f97da7 100644 --- a/src/corelib/kernel/qmetaobjectbuilder.cpp +++ b/src/corelib/kernel/qmetaobjectbuilder.cpp @@ -1649,6 +1649,7 @@ QList QMetaMethodBuilder::parameterNames() const void QMetaMethodBuilder::setParameterNames(const QList &value) { QMetaMethodBuilderPrivate *d = d_func(); + Q_ASSERT(d->parameterCount() >= value.size()); if (d) d->parameterNames = value; } diff --git a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp index fc48111e296..7c0e5e10b71 100644 --- a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp +++ b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp @@ -45,6 +45,8 @@ private slots: void ownMetaTypeNoProperties(); + // void tooLongParameterNamesList(); // QTBUG-139845 + private: static bool checkForSideEffects (const QMetaObjectBuilder& builder, @@ -1770,6 +1772,36 @@ void tst_QMetaObjectBuilder::enumCloning() } } +// Can't use this unittest on the CI because it hits an assert +// void tst_QMetaObjectBuilder::tooLongParameterNamesList() +// { +// // QTBUG-139845 +// QMetaObjectBuilder builder; +// +// builder.setSuperClass(&QObject::staticMetaObject); +// +// QMetaMethodBuilder methodBuilder = builder.addSignal("iChanged(int)"); +// methodBuilder.setParameterNames({"i"}); +// int icIdx = methodBuilder.index(); +// +// methodBuilder = builder.addSignal("fChanged(float)"); +// methodBuilder.setParameterNames({"f"}); +// int fcIdx = methodBuilder.index(); +// +// methodBuilder = builder.addSlot("pushI(int)"); +// methodBuilder.setParameterNames({"i"}); +// builder.addSlot("reset()"); +// methodBuilder = builder.addSlot("add(int)"); +// methodBuilder.setParameterNames({"", "i"}); +// +// methodBuilder.setReturnType("int"); +// +// builder.addProperty("i", "int", icIdx); +// builder.addProperty("f", "float", fcIdx); +// +// builder.toMetaObject(); +// } + void tst_QMetaObjectBuilder::ownMetaTypeNoProperties() { QMetaObjectBuilder builder;