summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin/qlibrary.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2021-09-11 16:50:33 -0500
committerThiago Macieira <thiago.macieira@intel.com>2021-10-20 22:04:01 -0700
commit2bea9b74ba4894c372b0587c0c5433b713b53e3a (patch)
treee6bce8054d42eb5b2b360c42fb31c0cf34d04025 /src/corelib/plugin/qlibrary.cpp
parent3c493b89df4dcabb304b821da229129e08797201 (diff)
QPlugin: keep the CBOR data as CBOR
Since QJsonValue and QCborValue use the same backend, we may as well use the CBOR frontend classes, which means we avoid an unnecessary conversion until later. Change-Id: I2de1b4dfacd443148279fffd16a3e2f56cd74c0b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/plugin/qlibrary.cpp')
-rw-r--r--src/corelib/plugin/qlibrary.cpp21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
index 432b232d27..4eea6f0002 100644
--- a/src/corelib/plugin/qlibrary.cpp
+++ b/src/corelib/plugin/qlibrary.cpp
@@ -270,13 +270,13 @@ static bool findPatternUnloaded(const QString &library, QLibraryPrivate *lib)
QString errMsg = library;
QLibraryScanResult r = qt_find_pattern(filedata, fdlen, &errMsg);
if (r.length) {
- QJsonDocument doc = qJsonFromRawLibraryMetaData(filedata + r.pos, r.length, &errMsg);
- if (doc.isNull()) {
+ if (!lib->metaData.parse(QByteArrayView(filedata + r.pos, r.length))) {
+ errMsg = lib->metaData.errorString();
qWarning("Found invalid metadata in lib %ls: %ls",
qUtf16Printable(library), qUtf16Printable(errMsg));
} else {
- lib->metaData = doc.object();
if (qt_debug_component()) {
+ QJsonDocument doc(lib->metaData.toJson());
qWarning("Found metadata in lib %s, metadata=\n%s\n",
library.toLocal8Bit().constData(), doc.toJson().constData());
}
@@ -711,13 +711,10 @@ static bool qt_get_metadata(QLibraryPrivate *priv, QString *errMsg)
if (metaData.size < sizeof(QPluginMetaData::Header))
return error(QLibrary::tr("metadata too small"));
- QJsonDocument doc = qJsonFromRawLibraryMetaData(reinterpret_cast<const char *>(metaData.data),
- metaData.size, errMsg);
- if (doc.isNull())
- return false; // error message already set
-
- priv->metaData = doc.object();
- return true;
+ if (priv->metaData.parse(metaData))
+ return true;
+ *errMsg = priv->metaData.errorString();
+ return false;
}
bool QLibraryPrivate::isPlugin()
@@ -773,8 +770,8 @@ void QLibraryPrivate::updatePluginState()
pluginState = IsNotAPlugin; // be pessimistic
- uint qt_version = (uint)metaData.value(QLatin1String("version")).toDouble();
- bool debug = metaData.value(QLatin1String("debug")).toBool();
+ uint qt_version = uint(metaData.value(QtPluginMetaDataKeys::QtVersion).toInteger());
+ bool debug = metaData.value(QtPluginMetaDataKeys::IsDebug).toBool();
if ((qt_version & 0x00ff00) > (QT_VERSION & 0x00ff00) || (qt_version & 0xff0000) != (QT_VERSION & 0xff0000)) {
if (qt_debug_component()) {
qWarning("In %s:\n"