summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-09-16 23:20:02 +0200
committerLiang Qi <liang.qi@qt.io>2016-09-16 23:20:11 +0200
commit4329879b4d73936fe757591f19cb2a86cae1d6b7 (patch)
tree07d5ef295ba3ebba78f264447811d2fca316249e /src
parente8e7a209824d6fb08411981d56ec16cc70af32e2 (diff)
parentc3b34277bc7b602185b2f4eccd19af270aa6b09d (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Diffstat (limited to 'src')
-rw-r--r--src/tools/idc/main.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/tools/idc/main.cpp b/src/tools/idc/main.cpp
index 60ec1e4..7d0c888 100644
--- a/src/tools/idc/main.cpp
+++ b/src/tools/idc/main.cpp
@@ -176,12 +176,17 @@ static bool attachTypeLibrary(const QString &applicationName, int resource, cons
static HMODULE loadLibraryQt(const QString &input)
{
+ const wchar_t *inputC = reinterpret_cast<const wchar_t *>(input.utf16());
if (QSysInfo::windowsVersion() < QSysInfo::WV_VISTA)
- return LoadLibrary(reinterpret_cast<const wchar_t *>(input.utf16())); // fallback for Windows XP and older
+ return LoadLibrary(inputC); // fallback for Windows XP and older
// Load DLL with the folder containing the DLL temporarily added to the search path when loading dependencies
- return LoadLibraryEx(reinterpret_cast<const wchar_t *>(input.utf16()), NULL,
- LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
+ HMODULE result =
+ LoadLibraryEx(inputC, NULL, LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
+ // If that fails, call with flags=0 to get LoadLibrary() behavior (search %PATH%).
+ if (!result)
+ result = LoadLibraryEx(inputC, NULL, 0);
+ return result;
}
static bool registerServer(const QString &input)
@@ -233,7 +238,9 @@ static HRESULT dumpIdl(const QString &input, const QString &idlfile, const QStri
HRESULT res = E_FAIL;
if (hasExeExtension(input)) {
- if (runWithQtInEnvironment(quotePath(input) + QLatin1String(" -dumpidl ") + idlfile + QLatin1String(" -version ") + version))
+ const QString command = quotePath(input) + QLatin1String(" -dumpidl ")
+ + quotePath(idlfile) + QLatin1String(" -version ") + version;
+ if (runWithQtInEnvironment(command))
res = S_OK;
} else {
HMODULE hdll = loadLibraryQt(input);
@@ -376,7 +383,7 @@ int runIdc(int argc, char **argv)
fprintf(stderr, "%s\n", qPrintable(error));
return ok ? 0 : 4;
} else if (!idlfile.isEmpty()) {
- idlfile = quotePath(QDir::toNativeSeparators(idlfile));
+ idlfile = QDir::toNativeSeparators(idlfile);
fprintf(stderr, "\n\n%s\n\n", qPrintable(idlfile));
const HRESULT res = dumpIdl(input, idlfile, version);