diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/plugin/qlibrary.cpp | 18 | ||||
-rw-r--r-- | src/corelib/plugin/qlibrary_p.h | 1 | ||||
-rw-r--r-- | src/corelib/plugin/qpluginloader.cpp | 3 |
3 files changed, 16 insertions, 6 deletions
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp index b5d760926a..049df0311b 100644 --- a/src/corelib/plugin/qlibrary.cpp +++ b/src/corelib/plugin/qlibrary.cpp @@ -580,12 +580,19 @@ bool qt_get_metadata(QtPluginQueryVerificationDataFunction pfn, QLibraryPrivate return true; } - bool QLibraryPrivate::isPlugin() { + if (pluginState == MightBeAPlugin) + updatePluginState(); + + return pluginState == IsAPlugin; +} + +void QLibraryPrivate::updatePluginState() +{ errorString.clear(); if (pluginState != MightBeAPlugin) - return pluginState == IsAPlugin; + return; bool success = false; @@ -599,7 +606,7 @@ bool QLibraryPrivate::isPlugin() // pretend we didn't see the file errorString = QLibrary::tr("The shared library was not found."); pluginState = IsNotAPlugin; - return false; + return; } #endif @@ -687,7 +694,8 @@ bool QLibraryPrivate::isPlugin() else errorString = QLibrary::tr("The file '%1' is not a valid Qt plugin.").arg(fileName); } - return false; + pluginState = IsNotAPlugin; + return; } pluginState = IsNotAPlugin; // be pessimistic @@ -717,8 +725,6 @@ bool QLibraryPrivate::isPlugin() } else { pluginState = IsAPlugin; } - - return pluginState == IsAPlugin; } /*! diff --git a/src/corelib/plugin/qlibrary_p.h b/src/corelib/plugin/qlibrary_p.h index 965f1d26bd..82c3cd9791 100644 --- a/src/corelib/plugin/qlibrary_p.h +++ b/src/corelib/plugin/qlibrary_p.h @@ -103,6 +103,7 @@ public: QString errorString; QLibrary::LoadHints loadHints; + void updatePluginState(); bool isPlugin(); static inline QJsonDocument fromRawMetaData(const char *raw) { diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp index 4ef36afcea..2216c1b908 100644 --- a/src/corelib/plugin/qpluginloader.cpp +++ b/src/corelib/plugin/qpluginloader.cpp @@ -283,6 +283,9 @@ void QPluginLoader::setFileName(const QString &fileName) d->loadHints = lh; if (fn.isEmpty()) d->errorString = QLibrary::tr("The shared library was not found."); + else + d->updatePluginState(); + #else if (qt_debug_component()) { qWarning("Cannot load %s into a statically linked Qt library.", |