diff --git a/dlls/kernel32/profile.c b/dlls/kernel32/profile.c index 8209a2a..3c1dffc 100644 --- a/dlls/kernel32/profile.c +++ b/dlls/kernel32/profile.c @@ -1179,6 +1179,9 @@ INT WINAPI GetPrivateProfileStringA( LPCSTR section, LPCSTR entry, LPWSTR bufferW; INT retW, ret = 0; + if (!len) + return 0; + bufferW = buffer ? HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)) : NULL; if (section) RtlCreateUnicodeStringFromAsciiz(§ionW, section); else sectionW.Buffer = NULL; @@ -1192,7 +1195,7 @@ INT WINAPI GetPrivateProfileStringA( LPCSTR section, LPCSTR entry, retW = GetPrivateProfileStringW( sectionW.Buffer, entryW.Buffer, def_valW.Buffer, bufferW, len, filenameW.Buffer); - if (len) + if (retW) { ret = WideCharToMultiByte(CP_ACP, 0, bufferW, retW + 1, buffer, len, NULL, NULL); if (!ret) @@ -1203,6 +1206,8 @@ INT WINAPI GetPrivateProfileStringA( LPCSTR section, LPCSTR entry, else ret--; /* strip terminating 0 */ } + else + buffer[0] = '\0'; RtlFreeUnicodeString(§ionW); RtlFreeUnicodeString(&entryW); -- 1.5.4.3