summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin/qlibrary.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2021-09-25 10:01:40 -0700
committerThiago Macieira <thiago.macieira@intel.com>2021-10-04 14:01:44 -0700
commit52377899d5825520eb791d3100aa003c87c3cff5 (patch)
tree012acd6013c8210f9b956faae4aaac4e2333c988 /src/corelib/plugin/qlibrary.cpp
parent279176aa5d6dc10641a54a06e9cf4d6a4041da16 (diff)
QPlugin: add error messages to the qt_get_metadata()
This is the already-loaded counterpart to the file scanning code Change-Id: I3eb1bd30e0124f89a052fffd16a81f518fa95f0d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/plugin/qlibrary.cpp')
-rw-r--r--src/corelib/plugin/qlibrary.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
index 142047e530..f83a9483f4 100644
--- a/src/corelib/plugin/qlibrary.cpp
+++ b/src/corelib/plugin/qlibrary.cpp
@@ -676,19 +676,20 @@ bool QLibrary::isLibrary(const QString &fileName)
static bool qt_get_metadata(QLibraryPrivate *priv, QString *errMsg)
{
- auto getMetaData = [](QFunctionPointer fptr) {
- auto f = reinterpret_cast<QPluginMetaData (*)()>(fptr);
- return f();
+ auto error = [=](QString &&explanation) {
+ *errMsg = QLibrary::tr("'%1' is not a Qt plugin (%2)").arg(priv->fileName, std::move(explanation));
+ return false;
};
QFunctionPointer pfn = priv->resolve("qt_plugin_query_metadata");
if (!pfn)
- return false;
+ return error(QLibrary::tr("entrypoint 'qt_plugin_query_metadata' not found"));
- auto metaData = getMetaData(pfn);
+ auto metaData = reinterpret_cast<QPluginMetaData (*)()>(pfn)();
QJsonDocument doc = qJsonFromRawLibraryMetaData(reinterpret_cast<const char *>(metaData.data), metaData.size, errMsg);
if (doc.isNull())
- return false;
+ return false; // error message already set
+
priv->metaData = doc.object();
return true;
}