From feff022186ff03d65e030f25497df313045c46ab Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Mon, 21 Mar 2011 20:34:39 +0100
Subject: [PATCH] dispose of dynamic resolution of GetLongPathNameW and
 GetShortPathNameW

everything links to kernel32 anyway
---
 src/libs/utils/winutils.cpp                   | 44 +++----------------
 src/libs/utils/winutils.h                     |  6 +--
 .../applicationlauncher_win.cpp               |  6 +--
 .../qmlprojectrunconfiguration.cpp            |  5 +--
 4 files changed, 12 insertions(+), 49 deletions(-)

diff --git a/src/libs/utils/winutils.cpp b/src/libs/utils/winutils.cpp
index 80ea37134b8..2c4bb30de66 100644
--- a/src/libs/utils/winutils.cpp
+++ b/src/libs/utils/winutils.cpp
@@ -132,66 +132,34 @@ QTCREATOR_UTILS_EXPORT QString winGetDLLVersion(WinDLLVersionType t,
     return rc;
 }
 
-QTCREATOR_UTILS_EXPORT QString getShortPathName(const QString &name, QString *errorMessage)
+QTCREATOR_UTILS_EXPORT QString getShortPathName(const QString &name)
 {
-    typedef DWORD (APIENTRY *GetShortPathNameProtoType)(LPCTSTR, LPTSTR, DWORD);
-
     if (name.isEmpty())
         return name;
 
-    const char *kernel32DLLC = "kernel32.dll";
-
-    QLibrary kernel32Lib(kernel32DLLC, 0);
-    if (!kernel32Lib.isLoaded() && !kernel32Lib.load()) {
-        *errorMessage = msgCannotLoad(kernel32DLLC, kernel32Lib.errorString());
-        return QString();
-    }
-
-    // MinGW requires old-style casts
-    GetShortPathNameProtoType getShortPathNameW = (GetShortPathNameProtoType)(kernel32Lib.resolve("GetShortPathNameW"));
-    if (!getShortPathNameW) {
-        *errorMessage = msgCannotResolve(kernel32DLLC);
-        return QString();
-    }
     // Determine length, then convert.
     const LPCTSTR nameC = reinterpret_cast<LPCTSTR>(name.utf16()); // MinGW
-    const DWORD length = (*getShortPathNameW)(nameC, NULL, 0);
+    const DWORD length = GetShortPathNameW(nameC, NULL, 0);
     if (length == 0)
         return name;
     QScopedArrayPointer<TCHAR> buffer(new TCHAR[length]);
-    (*getShortPathNameW)(nameC, buffer.data(), length);
+    GetShortPathNameW(nameC, buffer.data(), length);
     const QString rc = QString::fromUtf16(reinterpret_cast<const ushort *>(buffer.data()), length - 1);
     return rc;
 }
 
-QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name, QString *errorMessage)
+QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name)
 {
-    typedef DWORD (APIENTRY *GetLongPathNameProtoType)(LPCTSTR, LPTSTR, DWORD);
-
     if (name.isEmpty())
         return name;
 
-    const char *kernel32DLLC = "kernel32.dll";
-
-    QLibrary kernel32Lib(kernel32DLLC, 0);
-    if (!kernel32Lib.isLoaded() && !kernel32Lib.load()) {
-        *errorMessage = msgCannotLoad(kernel32DLLC, kernel32Lib.errorString());
-        return QString();
-    }
-
-    // MinGW requires old-style casts
-    GetLongPathNameProtoType getLongPathNameW = (GetLongPathNameProtoType)(kernel32Lib.resolve("GetLongPathNameW"));
-    if (!getLongPathNameW) {
-        *errorMessage = msgCannotResolve(kernel32DLLC);
-        return QString();
-    }
     // Determine length, then convert.
     const LPCTSTR nameC = reinterpret_cast<LPCTSTR>(name.utf16()); // MinGW
-    const DWORD length = (*getLongPathNameW)(nameC, NULL, 0);
+    const DWORD length = GetLongPathNameW(nameC, NULL, 0);
     if (length == 0)
         return name;
     QScopedArrayPointer<TCHAR> buffer(new TCHAR[length]);
-    (*getLongPathNameW)(nameC, buffer.data(), length);
+    GetLongPathNameW(nameC, buffer.data(), length);
     const QString rc = QString::fromUtf16(reinterpret_cast<const ushort *>(buffer.data()), length - 1);
     return rc;
 }
diff --git a/src/libs/utils/winutils.h b/src/libs/utils/winutils.h
index b32c88c86d1..817717d39a9 100644
--- a/src/libs/utils/winutils.h
+++ b/src/libs/utils/winutils.h
@@ -55,12 +55,10 @@ QTCREATOR_UTILS_EXPORT QString winGetDLLVersion(WinDLLVersionType t,
                                                 QString *errorMessage);
 
 // Return the short (8.3) file name
-QTCREATOR_UTILS_EXPORT QString getShortPathName(const QString &name,
-                                                QString *errorMessage);
+QTCREATOR_UTILS_EXPORT QString getShortPathName(const QString &name);
 
 // Returns long name
-QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name,
-                                               QString *errorMessage);
+QTCREATOR_UTILS_EXPORT QString getLongPathName(const QString &name);
 
 QTCREATOR_UTILS_EXPORT unsigned long winQPidToPid(const Q_PID qpid);
 
diff --git a/src/plugins/projectexplorer/applicationlauncher_win.cpp b/src/plugins/projectexplorer/applicationlauncher_win.cpp
index d383ec9e0a1..56c53ed20fc 100644
--- a/src/plugins/projectexplorer/applicationlauncher_win.cpp
+++ b/src/plugins/projectexplorer/applicationlauncher_win.cpp
@@ -71,11 +71,9 @@ ApplicationLauncher::~ApplicationLauncher()
 
 void ApplicationLauncher::setWorkingDirectory(const QString &dir)
 {
-    QString fixedPath = dir;
-    QString error;
-
     // Work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch' ...)
-    const QString longPath = Utils::getLongPathName(dir, &error);
+    QString fixedPath = dir;
+    const QString longPath = Utils::getLongPathName(dir);
     if (!longPath.isEmpty())
         fixedPath = longPath;
 
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
index e51367318ea..6106a975ed7 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
@@ -188,12 +188,11 @@ QString QmlProjectRunConfiguration::canonicalCapsPath(const QString &fileName)
     QString canonicalPath = QFileInfo(fileName).canonicalFilePath();
 
 #if defined(Q_OS_WIN32)
-    QString error;
     // don't know whether the shortpath step is really needed,
     // but we do this in QtDeclarative too.
-    QString path = Utils::getShortPathName(canonicalPath, &error);
+    QString path = Utils::getShortPathName(canonicalPath);
     if (!path.isEmpty())
-        path = Utils::getLongPathName(canonicalPath, &error);
+        path = Utils::getLongPathName(canonicalPath);
     if (!path.isEmpty())
         canonicalPath = path;
 #endif
-- 
GitLab