From c1bdaf0a1a5440050b9d3f2ac02123c663c32977 Mon Sep 17 00:00:00 2001 From: Yuhang Zhao <2546789017@qq.com> Date: Wed, 17 Aug 2022 20:31:01 +0800 Subject: [PATCH] QSystemLibrary: Use Windows functionality directly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Passing LOAD_LIBRARY_SEARCH_SYSTEM32 to LoadLibraryEx() can also only load libraries from the system directory, so in this case we can use it directly instead of doing all the work ourself. Change-Id: I4971781e55c9f1476861d599d58233114c280bc9 Reviewed-by: Thiago Macieira Reviewed-by: MÃ¥rten Nordheim --- src/corelib/plugin/qsystemlibrary.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/corelib/plugin/qsystemlibrary.cpp b/src/corelib/plugin/qsystemlibrary.cpp index f1475b4a67..d3dff226d9 100644 --- a/src/corelib/plugin/qsystemlibrary.cpp +++ b/src/corelib/plugin/qsystemlibrary.cpp @@ -59,20 +59,20 @@ static QString qSystemDirectory() HINSTANCE QSystemLibrary::load(const wchar_t *libraryName, bool onlySystemDirectory /* = true */) { + if (onlySystemDirectory) + return ::LoadLibraryExW(libraryName, nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32); + QStringList searchOrder; #if !defined(QT_BOOTSTRAPPED) - if (!onlySystemDirectory) - searchOrder << QFileInfo(qAppFileName()).path(); + searchOrder << QFileInfo(qAppFileName()).path(); #endif searchOrder << qSystemDirectory(); - if (!onlySystemDirectory) { - const QString PATH(QLatin1StringView(qgetenv("PATH"))); - searchOrder << PATH.split(u';', Qt::SkipEmptyParts); - } - QString fileName = QString::fromWCharArray(libraryName); - fileName.append(".dll"_L1); + const QString PATH(QLatin1StringView(qgetenv("PATH"))); + searchOrder << PATH.split(u';', Qt::SkipEmptyParts); + + const QString fileName = QString::fromWCharArray(libraryName); // Start looking in the order specified for (int i = 0; i < searchOrder.count(); ++i) {