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