From cac63042b1303511ef41642b3290e6d54d1a76b8 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 8 Apr 2025 15:03:24 +0200 Subject: [PATCH] Port qMetaTypeTypeInternal() from const char* to QByteArrayView The only caller of the function, QArgumentType, passes QByteArray::constData() to it, and the function then goes around and performs a strlen() in order to feed it into qMetaTypeTypeInternal(). Pass the name as a QByteArrayView, to save the strlen() over a string we already knew the length of. No measurable performance impact. Pick-to: 6.9 Task-number: QTBUG-135572 Change-Id: Ifccea7644ce86308df5fb7063c0269a579785504 Reviewed-by: Thiago Macieira Reviewed-by: Ulf Hermann --- src/corelib/kernel/qmetaobject_p.h | 4 ++-- src/corelib/kernel/qmetatype.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 718c13dd13c..18da94ed04a 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -2921,9 +2921,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()); } /*!