summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/plugin/qplugin.h19
-rw-r--r--src/corelib/plugin/qpluginloader.cpp4
2 files changed, 17 insertions, 6 deletions
diff --git a/src/corelib/plugin/qplugin.h b/src/corelib/plugin/qplugin.h
index affe3f5412..884f510541 100644
--- a/src/corelib/plugin/qplugin.h
+++ b/src/corelib/plugin/qplugin.h
@@ -155,13 +155,26 @@ void Q_CORE_EXPORT qRegisterStaticPluginFunction(QStaticPlugin staticPlugin);
// Since Qt 6.3
template <auto (&PluginMetaData)> class QPluginMetaDataV2
{
- struct Payload {
+ struct RegularPayload {
QPluginMetaData::MagicHeader header = {};
quint8 payload[sizeof(PluginMetaData)] = {};
- constexpr Payload() { QPluginMetaData::copy(payload, PluginMetaData); }
+ constexpr RegularPayload() { QPluginMetaData::copy(payload, PluginMetaData); }
};
-#define QT_PLUGIN_METADATAV2_SECTION QT_PLUGIN_METADATA_SECTION
+ struct StaticPayload {
+ QPluginMetaData::Header header = {};
+ quint8 payload[sizeof(PluginMetaData)] = {};
+ constexpr StaticPayload() { QPluginMetaData::copy(payload, PluginMetaData); }
+ };
+
+#if defined(QT_STATICPLUGIN)
+# define QT_PLUGIN_METADATAV2_SECTION
+ using Payload = StaticPayload;
+#else
+# define QT_PLUGIN_METADATAV2_SECTION QT_PLUGIN_METADATA_SECTION
+ using Payload = RegularPayload;
+#endif
+
Payload payload = {};
public:
diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp
index e0cd8e7c45..9afdf0e537 100644
--- a/src/corelib/plugin/qpluginloader.cpp
+++ b/src/corelib/plugin/qpluginloader.cpp
@@ -477,12 +477,10 @@ QList<QStaticPlugin> QPluginLoader::staticPlugins()
*/
QJsonObject QStaticPlugin::metaData() const
{
- Q_ASSERT(rawMetaDataSize >= qsizetype(sizeof(QPluginMetaData::MagicHeader)));
auto ptr = static_cast<const char *>(rawMetaData);
- ptr += sizeof(QPluginMetaData::MagicString);
QString errMsg;
- QJsonDocument doc = qJsonFromRawLibraryMetaData(ptr, rawMetaDataSize - sizeof(QPluginMetaData::MagicString), &errMsg);
+ QJsonDocument doc = qJsonFromRawLibraryMetaData(ptr, rawMetaDataSize, &errMsg);
Q_ASSERT(doc.isObject());
Q_ASSERT(errMsg.isEmpty());
return doc.object();