[PATCH v2] kernelbase: Improve stub for ResolveLocaleName.

Torge Matthies openglfreak at googlemail.com
Sun Jan 23 13:44:09 CST 2022


Hello Louis, there was a full implementation of ResolveLocaleName sent
in August of 2021 with no replies, maybe that one could be considered
for merging instead?
https://www.winehq.org/pipermail/wine-devel/2021-August/192359.html

On Sun, 23 Jan 2022 at 20:38, Louis Lenders <xerox.xerox2000x at gmail.com> wrote:
>
> v2: Remove some unnecessary initialization code (leftovers) from test,
>     as this minimal test now only tests for returnvalues of ResolveLocaleName
>
> Fixes https://bugs.winehq.org/show_bug.cgi?id=52407
>
> The current stub assumes a failing call to ResolveLocaleName returns 0, but tests show it returns
> 1 (and empty string). It actually never seems to returns 0.
> Added test is minimal to keep patch small, a few other traces of what the function returns can
> be seen on testbot here https://testbot.winehq.org/JobDetails.pl?Key=105651&f206=exe32.report#k206
> and https://testbot.winehq.org/JobDetails.pl?Key=105651&f206=exe32.report&f207=exe32.report#k207
>
> Signed-off-by: Louis Lenders <xerox.xerox2000x at gmail.com>
> ---
>  dlls/kernel32/tests/locale.c | 19 +++++++++++++++++++
>  dlls/kernelbase/locale.c     |  6 ++++--
>  2 files changed, 23 insertions(+), 2 deletions(-)
>
> diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
> index 2d327b7130c..daa70f13580 100644
> --- a/dlls/kernel32/tests/locale.c
> +++ b/dlls/kernel32/tests/locale.c
> @@ -99,6 +99,7 @@ static NTSTATUS (WINAPI *pRtlCustomCPToUnicodeN)(CPTABLEINFO*,WCHAR*,DWORD,DWORD
>  static NTSTATUS (WINAPI *pRtlGetSystemPreferredUILanguages)(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
>  static NTSTATUS (WINAPI *pRtlGetThreadPreferredUILanguages)(DWORD,ULONG*,WCHAR*,ULONG*);
>  static NTSTATUS (WINAPI *pRtlGetUserPreferredUILanguages)(DWORD,ULONG,ULONG*,WCHAR*,ULONG*);
> +static INT (WINAPI *pResolveLocaleName)(LPCWSTR,LPWSTR,INT);
>
>  static void InitFunctionPointers(void)
>  {
> @@ -139,6 +140,7 @@ static void InitFunctionPointers(void)
>    X(GetNLSVersion);
>    X(GetNLSVersionEx);
>    X(IsValidNLSVersion);
> +  X(ResolveLocaleName);
>
>    mod = GetModuleHandleA("ntdll");
>    X(RtlUpcaseUnicodeChar);
> @@ -7142,6 +7144,22 @@ static void test_EnumCalendarInfoExW(void)
>      }
>  }
>
> +static void test_ResolveLocaleName(void)
> +{
> +    WCHAR name[LOCALE_NAME_MAX_LENGTH];
> +    INT i;
> +
> +    /* querying for 'eo' returns empty string '' on <=win8 and 'eo-001' on win10 */
> +    i = pResolveLocaleName( L"eo", name, LOCALE_NAME_MAX_LENGTH );
> +    ok( i, "ResolveLocaleName returned unexpected %d\n", i );
> +
> +    i = pResolveLocaleName( L"wi-NEHQ", name, LOCALE_NAME_MAX_LENGTH );
> +    ok( i == 1, "ResolveLocaleName returned unexpected %d\n", i );
> +
> +    i = pResolveLocaleName( L"wi-NEHQ", NULL, 0 );
> +    ok( i == 1, "ResolveLocaleName returned unexpected %d\n", i );
> +}
> +
>  START_TEST(locale)
>  {
>    InitFunctionPointers();
> @@ -7198,4 +7216,5 @@ START_TEST(locale)
>    test_EnumCalendarInfoW();
>    test_EnumCalendarInfoExA();
>    test_EnumCalendarInfoExW();
> +  test_ResolveLocaleName();
>  }
> diff --git a/dlls/kernelbase/locale.c b/dlls/kernelbase/locale.c
> index 667d1a4dc65..79e60913182 100644
> --- a/dlls/kernelbase/locale.c
> +++ b/dlls/kernelbase/locale.c
> @@ -5621,8 +5621,10 @@ INT WINAPI DECLSPEC_HOTPATCH ResolveLocaleName( LPCWSTR name, LPWSTR buffer, INT
>  {
>      FIXME( "stub: %s, %p, %d\n", wine_dbgstr_w(name), buffer, len );
>
> -    SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
> -    return 0;
> +    if (buffer)
> +        buffer[0] = 0;
> +
> +    return 1;
>  }
>
>
> --
> 2.34.1
>
>



More information about the wine-devel mailing list