From 0c0b5d0ff09ff21d3d8b11bbc3797596450f2882 Mon Sep 17 00:00:00 2001 From: Ahmad Samir Date: Sat, 5 Apr 2025 01:22:04 +0200 Subject: [PATCH] QMetaObject: port qRemoveWhitespace() to QByteArrayView Change-Id: Ib5754708f25bdb3ac9d6546deaf3182dbb7ed8a8 Reviewed-by: Fabian Kosmale --- src/corelib/kernel/qmetaobject.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 2876162d737..0201ea56400 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -1312,17 +1312,19 @@ bool QMetaObject::checkConnectArgs(const QMetaMethod &signal, QMetaMethodPrivate::get(&method)); } -static void qRemoveWhitespace(const char *s, char *d) +static void qRemoveWhitespace(QByteArrayView str, char *d) { char last = 0; - while (*s && is_space(*s)) + const char *s = str.begin(); + const char *end = str.end(); + while (s != end && is_space(*s)) s++; - while (*s) { - while (*s && !is_space(*s)) + while (s != end) { + while (s != end && !is_space(*s)) last = *d++ = *s++; - while (*s && is_space(*s)) + while (s != end && is_space(*s)) s++; - if (*s && ((is_ident_char(*s) && is_ident_char(last)) + if (s != end && ((is_ident_char(*s) && is_ident_char(last)) || ((*s == ':') && (last == '<')))) { last = *d++ = ' '; } @@ -1388,7 +1390,7 @@ QByteArray QMetaObject::normalizedSignature(const char *method) int len = int(strlen(method)); QVarLengthArray stackbuf(len + 1); char *d = stackbuf.data(); - qRemoveWhitespace(method, d); + qRemoveWhitespace(QByteArrayView{method, len}, d); result.reserve(len);