diff --git a/dlls/kernel32/tests/profile.c b/dlls/kernel32/tests/profile.c index 393c0da..f85d765 100644 --- a/dlls/kernel32/tests/profile.c +++ b/dlls/kernel32/tests/profile.c @@ -174,22 +174,29 @@ static void test_profile_sections(void) SetLastError(0xdeadbeef); ret = GetPrivateProfileSectionA( NULL, buf, sizeof(buf), testfile4 ); ok( ret == 0, "expected return size 0, got %d\n", ret ); - ok( GetLastError() == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); + ok( GetLastError() == ERROR_INVALID_PARAMETER || + broken(GetLastError() == 0xdeadbeef), /* win9x */ + "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); SetLastError(0xdeadbeef); ret = GetPrivateProfileSectionA( "section1", buf, sizeof(buf), NULL ); ok( ret == 0, "expected return size 0, got %d\n", ret ); todo_wine - ok( GetLastError() == ERROR_FILE_NOT_FOUND, "expected ERROR_FILE_NOT_FOUND, got %d\n", GetLastError()); + ok( GetLastError() == ERROR_FILE_NOT_FOUND || + broken(GetLastError() == 0xdeadbeef), /* win9x */ + "expected ERROR_FILE_NOT_FOUND, got %d\n", GetLastError()); /* And a real one */ + SetLastError(0xdeadbeef); ret=GetPrivateProfileSectionA("section1", buf, sizeof(buf), testfile4); for( p = buf + strlen(buf) + 1; *p;p += strlen(p)+1) p[-1] = ','; ok( ret == 35 && !strcmp( buf, "name1=val1,name2=,name3,name4=val4"), "wrong section returned(%d): %s\n", ret, buf); ok( buf[ret-1] == 0 && buf[ret] == 0, "returned buffer not terminated with double-null\n" ); - ok( GetLastError() == S_OK, "expected S_OK, got %d\n", GetLastError()); + ok( GetLastError() == S_OK || + broken(GetLastError() == 0xdeadbeef), /* win9x */ + "expected S_OK, got %d\n", GetLastError()); DeleteFileA( testfile4 ); } @@ -215,23 +222,35 @@ static void test_profile_sections_names(void) /* Test with sufficiently large buffer */ ret = GetPrivateProfileSectionNamesA( buf, 29, testfile3 ); - ok( ret == 27, "expected return size 27, got %d\n", ret ); - ok( buf[ret-1] == 0 && buf[ret] == 0, "returned buffer not terminated with double-null\n" ); - + ok( ret == 27 || + broken(ret == 28), /* win8x */ + "expected return size 27, got %d\n", ret ); + if (ret == 28) ret--; + ok( !memcmp(buf, "section1\0section2\0section3\0", ret + 1), + "returned buffer not terminated with double-null\n" ); + /* Test with exactly fitting buffer */ ret = GetPrivateProfileSectionNamesA( buf, 28, testfile3 ); - ok( ret == 26, "expected return size 26, got %d\n", ret ); - ok( buf[ret+1] == 0 && buf[ret] == 0, "returned buffer not terminated with double-null\n" ); + ok( ret == 26 || + broken(ret == 28), /* win9x */ + "expected return size 26, got %d\n", ret ); + if (ret == 28) ret = 26; + ok( !memcmp(buf, "section1\0section2\0section3\0", ret + 2), + "returned buffer not terminated with double-null\n" ); /* Test with a buffer too small */ ret = GetPrivateProfileSectionNamesA( buf, 27, testfile3 ); ok( ret == 25, "expected return size 25, got %d\n", ret ); - ok( buf[ret+1] == 0 && buf[ret] == 0, "returned buffer not terminated with double-null\n" ); + ok( !memcmp(buf, "section1\0section2\0section\0", ret + 2) || + broken(!memcmp(buf, "section1\0section2\0\0ection3", ret + 2)), /* win9x */ + "returned buffer not terminated with double-null\n" ); /* Tests on nonexistent file */ memset(buf, 0xcc, sizeof(buf)); ret = GetPrivateProfileSectionNamesA( buf, 10, ".\\not_here.ini" ); - ok( ret == 0, "expected return size 0, got %d\n", ret ); + ok( ret == 0 || + broken(ret == 1), /* win9x */ + "expected return size 0, got %d\n", ret ); ok( buf[0] == 0, "returned buffer not terminated with null\n" ); ok( buf[1] != 0, "returned buffer terminated with double-null\n" ); @@ -307,10 +326,14 @@ static void test_profile_existing(void) ret = WritePrivateProfileString(SECTION, KEY, "12345", testfile1); if (!pe[i].write_error) { - ok( ret, "%d: WritePrivateProfileString failed with error %u\n", i, GetLastError() ); + ok( ret || + broken(!ret), /* win9x */ + "%d: WritePrivateProfileString failed with error %u\n", i, GetLastError() ); CloseHandle(h); size = GetPrivateProfileString(SECTION, KEY, 0, buffer, MAX_PATH, testfile1); - ok( size == 5, "%d: test failed, number of characters copied: %d instead of 5\n", i, size ); + ok( size == 5 || + broken(size == 0), /* win9x */ + "%d: test failed, number of characters copied: %d instead of 5\n", i, size ); } else { @@ -340,7 +363,9 @@ static void test_profile_existing(void) SetLastError(0xdeadbeef); ret = GetPrivateProfileStringA(SECTION, KEY, NULL, buffer, MAX_PATH, testfile2); if (!pe[i].read_error) - ok( ret, "%d: GetPrivateProfileString failed with error %u\n", i, GetLastError() ); + ok( ret || + broken(!ret), /* win9x */ + "%d: GetPrivateProfileString failed with error %u\n", i, GetLastError() ); else ok( !ret, "%d: GetPrivateProfileString succeeded\n", i ); CloseHandle(h); @@ -404,7 +429,10 @@ static void test_GetPrivateProfileString(void) lstrcpyA(buf, "kumquat"); ret = GetPrivateProfileStringA(NULL, "name1", "default", buf, MAX_PATH, filename); - ok(ret == 18, "Expected 18, got %d\n", ret); + ok(ret == 18 || + broken(ret == 19), /* win9x */ + "Expected 18, got %d\n", ret); + if (ret == 19) ret--; ok(!memcmp(buf, "section1\0section2\0", ret + 1), "Expected \"section1\\0section2\\0\", got \"%s\"\n", buf); @@ -526,8 +554,12 @@ static void test_GetPrivateProfileString(void) lstrcpyA(buf, "kumquat"); ret = GetPrivateProfileStringA("section1", "name1", "default", buf, MAX_PATH, NULL); - ok(ret == 7, "Expected 7, got %d\n", ret); - ok(!lstrcmpA(buf, "default"), "Expected \"default\", got \"%s\"\n", buf); + ok(ret == 7 || + broken(ret == 0), /* win9x */ + "Expected 7, got %d\n", ret); + ok(!lstrcmpA(buf, "default") || + broken(!lstrcmpA(buf, "kumquat")), /* win9x */ + "Expected \"default\", got \"%s\"\n", buf); /* lpFileName is empty */ lstrcpyA(buf, "kumquat"); @@ -583,7 +615,8 @@ static void test_GetPrivateProfileString(void) ret = GetPrivateProfileStringA(NULL, "name1", "default", buf, 16, filename); ok(ret == 14, "Expected 14, got %d\n", ret); - ok(!memcmp(buf, "section1\0secti\0", ret + 1), + ok(!memcmp(buf, "section1\0secti\0", ret + 2) || + broken(!memcmp(buf, "section1\0", 10)), /* win9x */ "Expected \"section1\\0secti\\0\", got \"%s\"\n", buf); /* lpKeyName is NULL, not enough room for final key name */ @@ -591,7 +624,8 @@ static void test_GetPrivateProfileString(void) ret = GetPrivateProfileStringA("section1", NULL, "default", buf, 16, filename); ok(ret == 14, "Expected 14, got %d\n", ret); - ok(!memcmp(buf, "name1\0name2\0na\0", ret + 1), + ok(!memcmp(buf, "name1\0name2\0na\0", ret + 2) || + broken(!memcmp(buf, "name1\0name2\0n\0", ret + 1)), /* win9x */ "Expected \"name1\\0name2\\0na\\0\", got \"%s\"\n", buf); /* key value has quotation marks which are stripped */ -- 1.5.4.3