From 452cd1c2614c3b1dde2c6f2f594c9dc3f6471163 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Sun, 16 Mar 2025 00:29:34 -0500 Subject: [PATCH] Core: use more recent api in ComputeDefaultCountryCode on Windows Co-authored-by: Shawn Hoffman --- Source/Core/Core/Config/DefaultLocale.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Source/Core/Core/Config/DefaultLocale.cpp b/Source/Core/Core/Config/DefaultLocale.cpp index 019bebf4fb..fe1f345554 100644 --- a/Source/Core/Core/Config/DefaultLocale.cpp +++ b/Source/Core/Core/Config/DefaultLocale.cpp @@ -90,13 +90,15 @@ static std::string ComputeDefaultCountryCode() #ifdef _WIN32 // Windows codepath: Check the regional information. // More likely to match the user's physical location than locales are. - // TODO: Can we use GetUserDefaultGeoName? (It was added in a Windows 10 update) - GEOID geo = GetUserGeoID(GEOCLASS_NATION); - const int buffer_size = GetGeoInfoW(geo, GEO_ISO2, nullptr, 0, 0); - std::vector buffer(buffer_size); - const int result = GetGeoInfoW(geo, GEO_ISO2, buffer.data(), buffer_size, 0); - if (result != 0) - return TStrToUTF8(buffer.data()); + const int buffer_size = GetUserDefaultGeoName(nullptr, 0); + if (buffer_size == 3) + { + std::wstring buffer(buffer_size, L'\0'); + const int result = GetUserDefaultGeoName(buffer.data(), buffer_size); + buffer.resize(2); + if (result > 0) + return WStringToUTF8(buffer); + } #endif // Generic codepath: Check the locales.