OSDN Git Service

check if the plugin is actually a plugin from QPluginLoader::instance()
authorIvailo Monev <xakepa10@gmail.com>
Sun, 12 Jun 2022 06:32:16 +0000 (09:32 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Sun, 12 Jun 2022 06:32:16 +0000 (09:32 +0300)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
src/core/plugin/qlibrary.cpp
src/core/plugin/qpluginloader.cpp

index 4d1a9b5..734f125 100644 (file)
@@ -600,9 +600,9 @@ void QLibrary::setFileNameAndVersion(const QString &fileName, int verNum)
 */
 void QLibrary::setFileNameAndVersion(const QString &fileName, const QString &version)
 {
-    QMutexLocker locker(qGlobalLibraryMutex());
     // if the library path is not the same it may very well be library with different symbols
     const QString librarymatch = qt_find_library(fileName, version);
+    QMutexLocker locker(qGlobalLibraryMutex());
     QLibraryCleanup* loadedlibraries = qGlobalLibraryList();
     for (int i = 0; i < loadedlibraries->size(); i++) {
         QLibraryPrivate* loadedlibrary = loadedlibraries->at(i);
index 9fbc38d..814b588 100644 (file)
@@ -156,7 +156,7 @@ QPluginLoader::~QPluginLoader()
 */
 QObject *QPluginLoader::instance()
 {
-    if (!d_ptr->loadPlugin()) {
+    if (!d_ptr->isPlugin() || !d_ptr->loadPlugin()) {
         return nullptr;
     }
     if (!d_ptr->inst && d_ptr->instance)