From: Dmitry Timoshkov dmitry@baikal.ru
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru --- dlls/kernel32/tests/locale.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index b418f97ddde..c3d28a0c6aa 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -34,13 +34,13 @@
#include "ntstatus.h" #define WIN32_NO_STATUS -#include "wine/test.h" #include "windef.h" #include "winbase.h" #include "winerror.h" #include "winnls.h" #include "winternl.h" #include "winreg.h" +#include "wine/test.h"
static const WCHAR upper_case[] = {'\t','J','U','S','T','!',' ','A',',',' ','T','E','S','T',';',' ','S','T','R','I','N','G',' ','1','/','*','+','-','.','\r','\n',0}; static const WCHAR lower_case[] = {'\t','j','u','s','t','!',' ','a',',',' ','t','e','s','t',';',' ','s','t','r','i','n','g',' ','1','/','*','+','-','.','\r','\n',0};
From: Dmitry Timoshkov dmitry@baikal.ru
MSDN states that CAL_RETURN_NUMBER is valid for GetCalendarInfo().
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru --- dlls/kernel32/tests/locale.c | 54 ++++++++++++++++++++++++++++++++---- dlls/kernelbase/locale.c | 2 ++ 2 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index c3d28a0c6aa..9cdd80dcfd1 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -8254,7 +8254,15 @@ static const LCID locales_with_optional_calendars[] = {
static BOOL CALLBACK calinfo_procA(LPSTR calinfo) { - (void)calinfo; + int val; + const char *p = calinfo; + while (*p) + { + ok(isdigit(*p), "got %c\n", *p); + p++; + } + val = atoi(calinfo); + ok(val >= CAL_GREGORIAN && val <= CAL_UMALQURA, "got %d\n", val); return TRUE; }
@@ -8263,6 +8271,9 @@ static void test_EnumCalendarInfoA(void) BOOL ret; INT i;
+ ret = EnumCalendarInfoA( calinfo_procA, LOCALE_USER_DEFAULT, ENUM_ALL_CALENDARS, CAL_ICALINTVALUE ); + ok( ret, "EnumCalendarInfoA for user default locale failed: %lu\n", GetLastError() ); + ret = EnumCalendarInfoA( calinfo_procA, LOCALE_USER_DEFAULT, ENUM_ALL_CALENDARS, CAL_RETURN_NUMBER | CAL_ICALINTVALUE ); ok( ret, "EnumCalendarInfoA for user default locale failed: %lu\n", GetLastError() ); @@ -8279,7 +8290,15 @@ static void test_EnumCalendarInfoA(void)
static BOOL CALLBACK calinfo_procW(LPWSTR calinfo) { - (void)calinfo; + int val; + const WCHAR *p = calinfo; + while (*p) + { + ok(isdigit(*p), "got %c\n", *p); + p++; + } + val = _wtoi(calinfo); + ok(val >= CAL_GREGORIAN && val <= CAL_UMALQURA, "got %d\n", val); return TRUE; }
@@ -8288,6 +8307,9 @@ static void test_EnumCalendarInfoW(void) BOOL ret; INT i;
+ ret = EnumCalendarInfoW( calinfo_procW, LOCALE_USER_DEFAULT, ENUM_ALL_CALENDARS, CAL_ICALINTVALUE ); + ok( ret, "EnumCalendarInfoW for user default locale failed: %lu\n", GetLastError() ); + ret = EnumCalendarInfoW( calinfo_procW, LOCALE_USER_DEFAULT, ENUM_ALL_CALENDARS, CAL_RETURN_NUMBER | CAL_ICALINTVALUE ); ok( ret, "EnumCalendarInfoW for user default locale failed: %lu\n", GetLastError() ); @@ -8304,8 +8326,15 @@ static void test_EnumCalendarInfoW(void)
static BOOL CALLBACK calinfoex_procA(LPSTR calinfo, LCID calid) { - (void)calinfo; - (void)calid; + int val; + const char *p = calinfo; + while (*p) + { + ok(isdigit(*p), "got %c\n", *p); + p++; + } + val = atoi(calinfo); + ok(val >= CAL_GREGORIAN && val <= CAL_UMALQURA, "got %d\n", val); return TRUE; }
@@ -8314,6 +8343,9 @@ static void test_EnumCalendarInfoExA(void) BOOL ret; INT i;
+ ret = EnumCalendarInfoExA( calinfoex_procA, LOCALE_USER_DEFAULT, ENUM_ALL_CALENDARS, CAL_ICALINTVALUE ); + ok( ret, "EnumCalendarInfoExA for user default locale failed: %lu\n", GetLastError() ); + ret = EnumCalendarInfoExA( calinfoex_procA, LOCALE_USER_DEFAULT, ENUM_ALL_CALENDARS, CAL_RETURN_NUMBER | CAL_ICALINTVALUE ); ok( ret, "EnumCalendarInfoExA for user default locale failed: %lu\n", GetLastError() ); @@ -8330,8 +8362,15 @@ static void test_EnumCalendarInfoExA(void)
static BOOL CALLBACK calinfoex_procW(LPWSTR calinfo, LCID calid) { - (void)calinfo; - (void)calid; + int val; + const WCHAR *p = calinfo; + while (*p) + { + ok(isdigit(*p), "got %c\n", *p); + p++; + } + val = _wtoi(calinfo); + ok(val >= CAL_GREGORIAN && val <= CAL_UMALQURA, "got %d\n", val); return TRUE; }
@@ -8340,6 +8379,9 @@ static void test_EnumCalendarInfoExW(void) BOOL ret; INT i;
+ ret = EnumCalendarInfoExW( calinfoex_procW, LOCALE_USER_DEFAULT, ENUM_ALL_CALENDARS, CAL_ICALINTVALUE ); + ok( ret, "EnumCalendarInfoExW for user default locale failed: %lu\n", GetLastError() ); + ret = EnumCalendarInfoExW( calinfoex_procW, LOCALE_USER_DEFAULT, ENUM_ALL_CALENDARS, CAL_RETURN_NUMBER | CAL_ICALINTVALUE ); ok( ret, "EnumCalendarInfoExW for user default locale failed: %lu\n", GetLastError() ); diff --git a/dlls/kernelbase/locale.c b/dlls/kernelbase/locale.c index c5be4cf95e2..71efeed0043 100644 --- a/dlls/kernelbase/locale.c +++ b/dlls/kernelbase/locale.c @@ -4345,6 +4345,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH Internal_EnumCalendarInfo( CALINFO_ENUMPROCW proc, return FALSE; }
+ type &= ~CAL_RETURN_NUMBER; + for (i = 0; i < count; i++) { id = calendars[i];