From bf83236b2f36c6222ba0acde3a13737cd4c4599d Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Wed, 6 Apr 2022 10:10:17 +0200 Subject: [PATCH] kernel32: Simplify GetGeoInfoA() implementation. Signed-off-by: Alexandre Julliard --- dlls/kernel32/locale.c | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index 020ec3d843d..4c815be43cc 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -381,30 +381,10 @@ BOOL WINAPI EnumUILanguagesA( UILANGUAGE_ENUMPROCA proc, DWORD flags, LONG_PTR p */ INT WINAPI GetGeoInfoA(GEOID geoid, GEOTYPE geotype, LPSTR data, int data_len, LANGID lang) { - WCHAR *buffW; - INT len; + WCHAR buffer[256]; TRACE("%ld %ld %p %d %d\n", geoid, geotype, data, data_len, lang); - len = GetGeoInfoW(geoid, geotype, NULL, 0, lang); - if (!len) - return 0; - - buffW = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR)); - if (!buffW) - return 0; - - GetGeoInfoW(geoid, geotype, buffW, len, lang); - len = WideCharToMultiByte(CP_ACP, 0, buffW, -1, NULL, 0, NULL, NULL); - if (!data || !data_len) { - HeapFree(GetProcessHeap(), 0, buffW); - return len; - } - - len = WideCharToMultiByte(CP_ACP, 0, buffW, -1, data, data_len, NULL, NULL); - HeapFree(GetProcessHeap(), 0, buffW); - - if (data_len < len) - SetLastError(ERROR_INSUFFICIENT_BUFFER); - return data_len < len ? 0 : len; + if (!GetGeoInfoW( geoid, geotype, buffer, ARRAY_SIZE(buffer), lang )) return 0; + return WideCharToMultiByte( CP_ACP, 0, buffer, -1, data, data_len, NULL, NULL ); } -- 2.11.4.GIT