mirror of
https://github.com/reactos/reactos.git
synced 2024-06-30 09:50:07 +00:00
[KERNEL32]
- Sync lcformat.c to Wine-1.3. This fixes (a number of potential) problems introduced by new nls data files being synced recently and led to crashes on locales having different months genitives. Original issue confirmed by Sergey Gusev <evilslon@mail.ru> and Igor Paliychuk. svn path=/trunk/; revision=48433
This commit is contained in:
parent
cf02088179
commit
f986e82a8d
|
@ -158,142 +158,6 @@ ConvertDefaultLocale(LCID lcid)
|
|||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* EnumDateFormatsExA (KERNEL32.@)
|
||||
*
|
||||
* FIXME: MSDN mentions only LOCALE_USE_CP_ACP, should we handle
|
||||
* LOCALE_NOUSEROVERRIDE here as well?
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
EnumDateFormatsExA(
|
||||
DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx,
|
||||
LCID Locale,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
CALID cal_id;
|
||||
char szBuf[256];
|
||||
|
||||
if (!lpDateFmtEnumProcEx)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!GetLocaleInfoW(Locale,
|
||||
LOCALE_ICALENDARTYPE|LOCALE_RETURN_NUMBER,
|
||||
(LPWSTR)&cal_id,
|
||||
sizeof(cal_id)/sizeof(WCHAR)))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
switch (dwFlags & ~LOCALE_USE_CP_ACP)
|
||||
{
|
||||
case 0:
|
||||
case DATE_SHORTDATE:
|
||||
if (GetLocaleInfoA(Locale,
|
||||
LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
szBuf, 256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(szBuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case DATE_LONGDATE:
|
||||
if (GetLocaleInfoA(Locale,
|
||||
LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
szBuf, 256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(szBuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case DATE_YEARMONTH:
|
||||
if (GetLocaleInfoA(Locale,
|
||||
LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
szBuf, 256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(szBuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* EnumDateFormatsExW (KERNEL32.@)
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
EnumDateFormatsExW(
|
||||
DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx,
|
||||
LCID Locale,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
CALID cal_id;
|
||||
WCHAR wbuf[256]; // FIXME
|
||||
|
||||
if (!lpDateFmtEnumProcEx)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!GetLocaleInfoW(Locale,
|
||||
LOCALE_ICALENDARTYPE | LOCALE_RETURN_NUMBER,
|
||||
(LPWSTR)&cal_id,
|
||||
sizeof(cal_id)/sizeof(WCHAR)))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
switch (dwFlags & ~LOCALE_USE_CP_ACP)
|
||||
{
|
||||
case 0:
|
||||
case DATE_SHORTDATE:
|
||||
if (GetLocaleInfoW(Locale,
|
||||
LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
wbuf,
|
||||
256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(wbuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case DATE_LONGDATE:
|
||||
if (GetLocaleInfoW(Locale,
|
||||
LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
wbuf,
|
||||
256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(wbuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case DATE_YEARMONTH:
|
||||
if (GetLocaleInfoW(Locale,
|
||||
LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
wbuf,
|
||||
256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(wbuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static BOOL NLS_RegEnumValue(HANDLE hKey, UINT ulIndex,
|
||||
LPWSTR szValueName, ULONG valueNameSize,
|
||||
LPWSTR szValueData, ULONG valueDataSize)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -218,7 +218,7 @@ gdi32 -
|
|||
kernel32 -
|
||||
reactos/dll/win32/kernel32/misc/errormsg.c # Out of sync
|
||||
reactos/dll/win32/kernel32/misc/profile.c # Out of sync
|
||||
reactos/dll/win32/kernel32/misc/lcformat.c # Out of sync
|
||||
reactos/dll/win32/kernel32/misc/lcformat.c # Synced to Wine-1_3
|
||||
reactos/dll/win32/kernel32/misc/lzexpand.c # Synced to Wine-1_1_23
|
||||
|
||||
msvcrt -
|
||||
|
|
Loading…
Reference in a new issue