diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2021-09-25 10:01:40 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2021-10-04 14:01:44 -0700 |
commit | 52377899d5825520eb791d3100aa003c87c3cff5 (patch) | |
tree | 012acd6013c8210f9b956faae4aaac4e2333c988 /src/corelib/plugin/qlibrary.cpp | |
parent | 279176aa5d6dc10641a54a06e9cf4d6a4041da16 (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.cpp | 13 |
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; } |