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>bb10
parent
1559cd8ff2
commit
d34c3f9e94
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue