James Hawkins : msi: Return the string length even if the string is NULL.

Alexandre Julliard julliard at winehq.org
Tue Feb 5 06:34:14 CST 2008


Module: wine
Branch: master
Commit: dc8f714ade869864dc8d5a4a64e3c66eed49ba2a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=dc8f714ade869864dc8d5a4a64e3c66eed49ba2a

Author: James Hawkins <truiken at gmail.com>
Date:   Mon Feb  4 11:37:19 2008 -0600

msi: Return the string length even if the string is NULL.

---

 dlls/msi/msi.c       |   15 ++++++++-------
 dlls/msi/tests/msi.c |   14 ++++----------
 2 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c
index 593a46f..de9dc4f 100644
--- a/dlls/msi/msi.c
+++ b/dlls/msi/msi.c
@@ -1611,7 +1611,8 @@ UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath, LPWSTR lpVersionBuf,
         ret = GetLastError();
         goto end;
     }
-    if( lpVersionBuf && pcchVersionBuf && *pcchVersionBuf )
+
+    if (pcchVersionBuf)
     {
         if( VerQueryValueW(lpVer, szVersionResource, (LPVOID*)&ffi, &puLen) &&
             (puLen > 0) )
@@ -1619,24 +1620,24 @@ UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath, LPWSTR lpVersionBuf,
             wsprintfW(tmp, szVersionFormat,
                   HIWORD(ffi->dwFileVersionMS), LOWORD(ffi->dwFileVersionMS),
                   HIWORD(ffi->dwFileVersionLS), LOWORD(ffi->dwFileVersionLS));
-            lstrcpynW(lpVersionBuf, tmp, *pcchVersionBuf);
-            *pcchVersionBuf = lstrlenW(lpVersionBuf);
+            if (lpVersionBuf) lstrcpynW(lpVersionBuf, tmp, *pcchVersionBuf);
+            *pcchVersionBuf = lstrlenW(tmp);
         }
         else
         {
-            *lpVersionBuf = 0;
+            if (lpVersionBuf) *lpVersionBuf = 0;
             *pcchVersionBuf = 0;
         }
     }
 
-    if( lpLangBuf && pcchLangBuf && *pcchLangBuf )
+    if (pcchLangBuf)
     {
         DWORD lang = GetUserDefaultLangID();
 
         FIXME("Retrieve language from file\n");
         wsprintfW(tmp, szLangFormat, lang);
-        lstrcpynW(lpLangBuf, tmp, *pcchLangBuf);
-        *pcchLangBuf = lstrlenW(lpLangBuf);
+        if (lpLangBuf) lstrcpynW(lpLangBuf, tmp, *pcchLangBuf);
+        *pcchLangBuf = lstrlenW(tmp);
     }
 
 end:
diff --git a/dlls/msi/tests/msi.c b/dlls/msi/tests/msi.c
index 4cc193d..dfe91db 100644
--- a/dlls/msi/tests/msi.c
+++ b/dlls/msi/tests/msi.c
@@ -2012,19 +2012,13 @@ static void test_MsiGetFileVersion(void)
     versz = MAX_PATH;
     r = MsiGetFileVersionA(path, NULL, &versz, NULL, NULL);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    todo_wine
-    {
-        ok(versz == verchecksz, "Expected %d, got %d\n", verchecksz, versz);
-    }
+    ok(versz == verchecksz, "Expected %d, got %d\n", verchecksz, versz);
 
     /* get pcchLangBuf */
     langsz = MAX_PATH;
     r = MsiGetFileVersionA(path, NULL, NULL, NULL, &langsz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    todo_wine
-    {
-        ok(langsz == langchecksz, "Expected %d, got %d\n", langchecksz, langsz);
-    }
+    ok(langsz == langchecksz, "Expected %d, got %d\n", langchecksz, langsz);
 
     /* pcchVersionBuf not big enough */
     versz = 5;
@@ -2032,10 +2026,10 @@ static void test_MsiGetFileVersion(void)
     r = MsiGetFileVersionA(path, version, &versz, NULL, NULL);
     ok(!strncmp(version, vercheck, 4),
        "Expected first 4 characters of %s, got %s\n", vercheck, version);
+    ok(versz == verchecksz, "Expected %d, got %d\n", verchecksz, versz);
     todo_wine
     {
         ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
-        ok(versz == verchecksz, "Expected %d, got %d\n", verchecksz, versz);
     }
 
     /* pcchLangBuf not big enough */
@@ -2044,10 +2038,10 @@ static void test_MsiGetFileVersion(void)
     r = MsiGetFileVersionA(path, NULL, NULL, lang, &langsz);
     ok(!strncmp(lang, langcheck, 2),
        "Expected first character of %s, got %s\n", langcheck, lang);
+    ok(langsz == langchecksz, "Expected %d, got %d\n", langchecksz, langsz);
     todo_wine
     {
         ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
-        ok(langsz == langchecksz, "Expected %d, got %d\n", langchecksz, langsz);
     }
 
     HeapFree(GetProcessHeap(), 0, vercheck);




More information about the wine-cvs mailing list