diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index 9f539ddd539..eedb0bea731 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -4814,7 +4814,7 @@ BOOL WINAPI EnumUILanguagesA(UILANGUAGE_ENUMPROCA pUILangEnumProc, DWORD dwFlags SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } - if(dwFlags) { + if(dwFlags & ~MUI_LANGUAGE_ID) { SetLastError(ERROR_INVALID_FLAGS); return FALSE; } @@ -4843,7 +4843,7 @@ BOOL WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW pUILangEnumProc, DWORD dwFlags SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } - if(dwFlags) { + if(dwFlags & ~MUI_LANGUAGE_ID) { SetLastError(ERROR_INVALID_FLAGS); return FALSE; } diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index 0c05311a20e..126b08cc571 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -3762,6 +3762,14 @@ static void test_EnumUILanguageA(void) SetLastError(ERROR_SUCCESS); ret = pEnumUILanguagesA(luilocale_proc2A, 0, 0); ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError()); + ok(enumCount == 1, "enumCount = %u\n", enumCount); + + enumCount = 0; + SetLastError(ERROR_SUCCESS); + ret = pEnumUILanguagesA(luilocale_proc2A, MUI_LANGUAGE_ID, 0); + ok(ret || broken(!ret && GetLastError() == ERROR_INVALID_FLAGS), /* winxp */ + "Expected ret != 0, got %d, error %d\n", ret, GetLastError()); + if (ret) ok(enumCount == 1, "enumCount = %u\n", enumCount); SetLastError(ERROR_SUCCESS); ret = pEnumUILanguagesA(NULL, 0, 0);