Alexandre Julliard : version: Check the Windows directory first in VerFindFileA/W.
Alexandre Julliard
julliard at winehq.org
Fri Sep 9 10:56:45 CDT 2011
Module: wine
Branch: master
Commit: 702941eae1c32d678bd078e117ff5b37c3e0929e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=702941eae1c32d678bd078e117ff5b37c3e0929e
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri Sep 9 13:23:16 2011 +0200
version: Check the Windows directory first in VerFindFileA/W.
---
dlls/version/tests/install.c | 4 +-
dlls/version/version.c | 46 +++++++++++++++++++++++------------------
2 files changed, 28 insertions(+), 22 deletions(-)
diff --git a/dlls/version/tests/install.c b/dlls/version/tests/install.c
index 6fc19bb..6faeaba 100644
--- a/dlls/version/tests/install.c
+++ b/dlls/version/tests/install.c
@@ -89,7 +89,7 @@ static void test_find_file(void)
"got %d(%s) expected MAX_PATH\n", dwOut, outBuf);
break;
default:
- todo_wine ok(0, "Got unexpected return value %x\n", ret);
+ ok(0, "Got unexpected return value %x\n", ret);
}
dwCur=MAX_PATH;
@@ -111,7 +111,7 @@ static void test_find_file(void)
"got %d(%s) expected MAX_PATH\n", dwOut, outBuf);
break;
default:
- todo_wine ok(0, "Got unexpected return value %x\n", ret);
+ ok(0, "Got unexpected return value %x\n", ret);
}
}
}
diff --git a/dlls/version/version.c b/dlls/version/version.c
index 8ea0209..f636c62 100644
--- a/dlls/version/version.c
+++ b/dlls/version/version.c
@@ -1101,7 +1101,7 @@ DWORD WINAPI VerFindFileA(
const char *destDir;
unsigned int curDirSizeReq;
unsigned int destDirSizeReq;
- char systemDir[MAX_PATH];
+ char winDir[MAX_PATH], systemDir[MAX_PATH];
/* Print out debugging information */
TRACE("flags = %x filename=%s windir=%s appdir=%s curdirlen=%p(%u) destdirlen=%p(%u)\n",
@@ -1132,17 +1132,20 @@ DWORD WINAPI VerFindFileA(
}
else /* not a shared file */
{
- if(lpszAppDir)
+ destDir = lpszAppDir ? lpszAppDir : "";
+ if(lpszFilename)
{
- destDir = lpszAppDir;
- if(lpszFilename)
+ GetWindowsDirectoryA( winDir, MAX_PATH );
+ if(testFileExistenceA(destDir, lpszFilename, FALSE)) curDir = destDir;
+ else if(testFileExistenceA(winDir, lpszFilename, FALSE))
+ {
+ curDir = winDir;
+ retval |= VFF_CURNEDEST;
+ }
+ else if(testFileExistenceA(systemDir, lpszFilename, FALSE))
{
- if(testFileExistenceA(destDir, lpszFilename, FALSE)) curDir = destDir;
- else if(testFileExistenceA(systemDir, lpszFilename, FALSE))
- {
- curDir = systemDir;
- retval |= VFF_CURNEDEST;
- }
+ curDir = systemDir;
+ retval |= VFF_CURNEDEST;
}
}
}
@@ -1195,7 +1198,7 @@ DWORD WINAPI VerFindFileW( DWORD flags,LPCWSTR lpszFilename,LPCWSTR lpszWinDir,
const WCHAR *destDir;
unsigned int curDirSizeReq;
unsigned int destDirSizeReq;
- WCHAR systemDir[MAX_PATH];
+ WCHAR winDir[MAX_PATH], systemDir[MAX_PATH];
/* Print out debugging information */
TRACE("flags = %x filename=%s windir=%s appdir=%s curdirlen=%p(%u) destdirlen=%p(%u)\n",
@@ -1226,17 +1229,20 @@ DWORD WINAPI VerFindFileW( DWORD flags,LPCWSTR lpszFilename,LPCWSTR lpszWinDir,
}
else /* not a shared file */
{
- if(lpszAppDir)
+ destDir = lpszAppDir ? lpszAppDir : &emptyW;
+ if(lpszFilename)
{
- destDir = lpszAppDir;
- if(lpszFilename)
+ GetWindowsDirectoryW( winDir, MAX_PATH );
+ if(testFileExistenceW(destDir, lpszFilename, FALSE)) curDir = destDir;
+ else if(testFileExistenceW(winDir, lpszFilename, FALSE))
+ {
+ curDir = winDir;
+ retval |= VFF_CURNEDEST;
+ }
+ else if(testFileExistenceW(systemDir, lpszFilename, FALSE))
{
- if(testFileExistenceW(destDir, lpszFilename, FALSE)) curDir = destDir;
- else if(testFileExistenceW(systemDir, lpszFilename, FALSE))
- {
- curDir = systemDir;
- retval |= VFF_CURNEDEST;
- }
+ curDir = systemDir;
+ retval |= VFF_CURNEDEST;
}
}
}
More information about the wine-cvs
mailing list