| Index: src/plugin/PluginSystem.cpp |
| =================================================================== |
| --- a/src/plugin/PluginSystem.cpp |
| +++ b/src/plugin/PluginSystem.cpp |
| @@ -1,35 +1,38 @@ |
| #include "PluginStdAfx.h" |
| - |
| #include "PluginSystem.h" |
| #include "PluginClient.h" |
| +#include <array> |
| std::wstring GetBrowserLanguage() |
| { |
| LANGID lcid = GetUserDefaultLangID(); |
| - wchar_t language[128]; |
| - memset(language, 0, sizeof(language)); |
| - wchar_t country[128]; |
| - memset(language, 0, sizeof(country)); |
| - |
| std::wstring lang; |
| - int res = GetLocaleInfoW(lcid, LOCALE_SISO639LANGNAME, language, 127); |
| - if (res == 0) |
| + // According to http://msdn.microsoft.com/en-us/library/windows/desktop/dd373848(v=vs.85).aspx |
| + // The maximum number of characters allowed for this string is nine, including a terminating null character. |
| { |
| - DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_SYSINFO, PLUGIN_ERROR_SYSINFO_BROWSER_LANGUAGE, "System::GetBrowserLang - Failed"); |
| - } |
| - else |
| - { |
| - lang += language; |
| + std::array<wchar_t, 9> localeLanguage; |
| + int res = GetLocaleInfoW(lcid, LOCALE_SISO639LANGNAME, localeLanguage.data(), localeLanguage.size()); |
|
Oleksandr
2014/10/17 07:09:07
We could use std::wstring for localeLanguage here
|
| + if (res == 0) |
| + { |
| + DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_SYSINFO, PLUGIN_ERROR_SYSINFO_BROWSER_LANGUAGE, "System::GetBrowserLang - Failed"); |
| + } |
| + else |
| + { |
| + lang += localeLanguage.data(); |
| + } |
| } |
| lang += L"-"; |
| - res = GetLocaleInfoW(lcid, LOCALE_SISO3166CTRYNAME, country, 127); |
| - if (res == 0) |
| { |
| - DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_SYSINFO, PLUGIN_ERROR_SYSINFO_BROWSER_LANGUAGE, "System::GetBrowserLang - failed to retrieve country"); |
| - } |
| - else |
| - { |
| - lang += country; |
| + std::array<wchar_t, 9> localeCountry; |
| + int res = GetLocaleInfoW(lcid, LOCALE_SISO3166CTRYNAME, localeCountry.data(), localeCountry.size()); |
| + if (res == 0) |
| + { |
| + DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_SYSINFO, PLUGIN_ERROR_SYSINFO_BROWSER_LANGUAGE, "System::GetBrowserLang - failed to retrieve country"); |
| + } |
| + else |
| + { |
| + lang += localeCountry.data(); |
| + } |
| } |
| return lang; |
| } |