On 3/24/21 4:52 PM, Jacek Caban wrote:
On 24.03.2021 11:32, Rémi Bernon wrote:
diff --git a/dlls/windows.globalization/main.c b/dlls/windows.globalization/main.c index 17bb49a1c4e..914fde0eff6 100644 --- a/dlls/windows.globalization/main.c +++ b/dlls/windows.globalization/main.c @@ -225,8 +225,20 @@ static HRESULT STDMETHODCALLTYPE globalization_preferences_get_Languages( static HRESULT STDMETHODCALLTYPE globalization_preferences_get_HomeGeographicRegion( IGlobalizationPreferencesStatics*iface, HSTRING* out) { - FIXME("iface %p, out %p stub!\n", iface, out); - return E_NOTIMPL; + WCHAR locale_w[LOCALE_NAME_MAX_LENGTH], *tmp; + const WCHAR *country;
+ TRACE("iface %p, out %p.\n", iface, out);
+ GetUserDefaultLocaleName(locale_w, LOCALE_NAME_MAX_LENGTH);
Shouldn't it use GetUserDefaultGeoName?
Ah maybe I didn't know there was a function to get that directly, thanks.
+ if ((tmp = wcsrchr(locale_w, '_'))) *tmp = 0; + if (!(tmp = wcschr(locale_w, '-')) || (wcslen(tmp) > 3 && !(tmp = wcschr(tmp + 1, '-')))) country = L"US"; + else country = tmp + 1;
country is uninitialized in else case.
Hm, I'm not sure to see how? It's set to point to the char after the first '-', or the second '-' if the country code is longer than 2 chars. In we fail any of these, it defaults to "US".
Do you mean if GetUserDefaultLocaleName fails?
Thanks,
Jacek