From 52377899d5825520eb791d3100aa003c87c3cff5 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 25 Sep 2021 10:01:40 -0700 Subject: [PATCH] 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 --- src/corelib/plugin/qlibrary.cpp | 13 +++++++------ 1 file 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(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(pfn)(); QJsonDocument doc = qJsonFromRawLibraryMetaData(reinterpret_cast(metaData.data), metaData.size, errMsg); if (doc.isNull()) - return false; + return false; // error message already set + priv->metaData = doc.object(); return true; }