summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin/qlibrary.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-02-02 18:38:21 +0100
committerMarc Mutz <marc.mutz@qt.io>2022-02-15 15:44:51 +0100
commitd34c3f9e94c795cf0875e49239349cb767500f89 (patch)
treec49c3c02f360647ace2aefbdd3bf65b5161701e9 /src/corelib/plugin/qlibrary.cpp
parent1559cd8ff23b46a1e708f5d0093100acb9877028 (diff)
QLibrary: use QStaticByteArrayMatcher
Because of code-after-return style, I don't actually know what the code is used for, but since it's compiled, make sure to not leave a dynamically-initialized static variable lying around, even if control never reaches it. Pick-to: 6.3 Change-Id: I6ce30d8c060f96a2d819ed85f79d18a7ef7e9b05 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/plugin/qlibrary.cpp')
-rw-r--r--src/corelib/plugin/qlibrary.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
index 6e08e73f23..ac33f16268 100644
--- a/src/corelib/plugin/qlibrary.cpp
+++ b/src/corelib/plugin/qlibrary.cpp
@@ -210,8 +210,16 @@ static QLibraryScanResult qt_find_pattern(const char *s, qsizetype s_len, QStrin
#elif defined(Q_OS_WIN)
return QCoffPeParser::parse({s, s_len}, errMsg);
#endif
- QByteArrayView pattern = QPluginMetaData::MagicString;
- static const QByteArrayMatcher matcher(pattern.toByteArray());
+ static constexpr auto matcher = [] {
+ // QPluginMetaData::MagicString is not NUL-terminated, but
+ // qMakeStaticByteArrayMatcher requires its argument to be, so
+ // duplicate here, but statically check we didn't mess up:
+ constexpr auto &pattern = "QTMETADATA !";
+ constexpr auto magic = std::string_view(QPluginMetaData::MagicString,
+ sizeof(QPluginMetaData::MagicString));
+ static_assert(pattern == magic);
+ return qMakeStaticByteArrayMatcher(pattern);
+ }();
qsizetype i = matcher.indexIn(s, s_len);
if (i < 0) {
*errMsg = QLibrary::tr("'%1' is not a Qt plugin").arg(*errMsg);