diff --git a/src/corelib/kernel/qmetaobject_p.h b/src/corelib/kernel/qmetaobject_p.h index 3a04516b381..1d72d151611 100644 --- a/src/corelib/kernel/qmetaobject_p.h +++ b/src/corelib/kernel/qmetaobject_p.h @@ -36,7 +36,7 @@ using namespace QtMocConstants; Q_DECLARE_FLAGS(MetaObjectFlags, MetaObjectFlag) Q_DECLARE_OPERATORS_FOR_FLAGS(MetaObjectFlags) -Q_CORE_EXPORT int qMetaTypeTypeInternal(const char *); +Q_CORE_EXPORT int qMetaTypeTypeInternal(QByteArrayView name); class QArgumentType { @@ -46,7 +46,7 @@ public: : _metaType(metaType) {} QArgumentType(const QByteArray &name) - : _metaType(QMetaType(qMetaTypeTypeInternal(name.constData()))), _name(name) + : _metaType(QMetaType{qMetaTypeTypeInternal(qToByteArrayViewIgnoringNull(name))}), _name(name) {} QMetaType metaType() const noexcept { return _metaType; } diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index ccf863b566e..beaca41996d 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -2897,9 +2897,9 @@ static inline int qMetaTypeTypeImpl(const char *typeName, int length) doesn't attempt to normalize the type name (i.e., the lookup will fail for type names in non-normalized form). */ -Q_CORE_EXPORT int qMetaTypeTypeInternal(const char *typeName) +Q_CORE_EXPORT int qMetaTypeTypeInternal(QByteArrayView name) { - return qMetaTypeTypeImpl(typeName, int(qstrlen(typeName))); + return qMetaTypeTypeImpl(name.data(), name.size()); } /*!