diff --git a/dlls/kernel32/profile.c b/dlls/kernel32/profile.c index ab26533db35..3ed2dcddeaf 100644 --- a/dlls/kernel32/profile.c +++ b/dlls/kernel32/profile.c @@ -405,6 +405,7 @@ static PROFILESECTION *PROFILE_Load(HANDLE hFile, ENCODING * pEncoding) { szLineStart = next_line; next_line = memchrW(szLineStart, '\n', szEnd - szLineStart); + if (!next_line) next_line = memchrW(szLineStart, '\r', szEnd - szLineStart); if (!next_line) next_line = szEnd; else next_line++; szLineEnd = next_line; diff --git a/dlls/kernel32/tests/profile.c b/dlls/kernel32/tests/profile.c index 8a3e83bbd20..2a9f08a6ca2 100644 --- a/dlls/kernel32/tests/profile.c +++ b/dlls/kernel32/tests/profile.c @@ -428,7 +428,7 @@ static BOOL emptystr_ok(CHAR emptystr[MAX_PATH]) return TRUE; } -static void test_GetPrivateProfileString(void) +static void test_GetPrivateProfileString(const char *content, const char *descript) { DWORD ret; CHAR buf[MAX_PATH]; @@ -441,15 +441,10 @@ static void test_GetPrivateProfileString(void) LPSTR tempfile; static const char filename[] = ".\\winetest.ini"; - static const char content[]= - "[section1]\r\n" - "name1=val1\r\n" - "name2=\"val2\"\r\n" - "name3\r\n" - "name4=a\r\n" - "[section2]\r\n"; - create_test_file(filename, content, sizeof(content)); + trace("test_GetPrivateProfileStringA: %s\n", descript); + + create_test_file(filename, content, lstrlenA(content)); /* Run this test series with caching. Wine won't cache profile files younger than 2.1 seconds. */ @@ -674,7 +669,7 @@ static void test_GetPrivateProfileString(void) GetWindowsDirectoryA(windir, MAX_PATH); GetTempFileNameA(windir, "pre", 0, path); tempfile = strrchr(path, '\\') + 1; - create_test_file(path, content, sizeof(content)); + create_test_file(path, content, lstrlenA(content)); /* only filename is used, file exists in windows directory */ lstrcpyA(buf, "kumquat"); @@ -703,5 +698,20 @@ START_TEST(profile) test_profile_existing(); test_profile_delete_on_close(); test_profile_refresh(); - test_GetPrivateProfileString(); + test_GetPrivateProfileString( + "[section1]\r\n" + "name1=val1\r\n" + "name2=\"val2\"\r\n" + "name3\r\n" + "name4=a\r\n" + "[section2]\r\n", + "CR+LF"); + test_GetPrivateProfileString( + "[section1]\r" + "name1=val1\r" + "name2=\"val2\"\r" + "name3\r" + "name4=a\r" + "[section2]\r", + "CR only"); }