Francois Gouget : kernel32: Reset LastError if GetModuleFileName() succeeds .

Alexandre Julliard julliard at winehq.org
Mon Oct 3 17:21:26 CDT 2011


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

Author: Francois Gouget <fgouget at codeweavers.com>
Date:   Mon Oct  3 23:38:29 2011 +0200

kernel32: Reset LastError if GetModuleFileName() succeeds.

---

 dlls/kernel32/module.c       |    3 +++
 dlls/kernel32/tests/module.c |    8 ++++++++
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/dlls/kernel32/module.c b/dlls/kernel32/module.c
index 8ee0fcd..1b0b23f 100644
--- a/dlls/kernel32/module.c
+++ b/dlls/kernel32/module.c
@@ -648,7 +648,10 @@ DWORD WINAPI GetModuleFileNameW( HMODULE hModule, LPWSTR lpFileName, DWORD size
         len = min(size, pldr->FullDllName.Length / sizeof(WCHAR));
         memcpy(lpFileName, pldr->FullDllName.Buffer, len * sizeof(WCHAR));
         if (len < size)
+        {
             lpFileName[len] = '\0';
+            SetLastError( 0 );
+        }
         else
             SetLastError( ERROR_INSUFFICIENT_BUFFER );
     }
diff --git a/dlls/kernel32/tests/module.c b/dlls/kernel32/tests/module.c
index 01fa448..07d5892 100644
--- a/dlls/kernel32/tests/module.c
+++ b/dlls/kernel32/tests/module.c
@@ -44,13 +44,21 @@ static void testGetModuleFileName(const char* name)
 
     /* first test, with enough space in buffer */
     memset(bufA, '-', sizeof(bufA));
+    SetLastError(0xdeadbeef);
     len1A = GetModuleFileNameA(hMod, bufA, sizeof(bufA));
+    ok(GetLastError() == ERROR_SUCCESS ||
+       broken(GetLastError() == 0xdeadbeef), /* <= XP SP3 */
+       "LastError was not reset: %u\n", GetLastError());
     ok(len1A > 0, "Getting module filename for handle %p\n", hMod);
 
     if (is_unicode_enabled)
     {
         memset(bufW, '-', sizeof(bufW));
+        SetLastError(0xdeadbeef);
         len1W = GetModuleFileNameW(hMod, bufW, sizeof(bufW) / sizeof(WCHAR));
+        ok(GetLastError() == ERROR_SUCCESS ||
+           broken(GetLastError() == 0xdeadbeef), /* <= XP SP3 */
+           "LastError was not reset: %u\n", GetLastError());
         ok(len1W > 0, "Getting module filename for handle %p\n", hMod);
     }
 




More information about the wine-cvs mailing list