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; |
} |