Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: src/plugin/PluginSystem.cpp

Issue 5163581322559488: Issue 1283 - wrong usage of memset, fix sizeof, make proper initializing (Closed)
Patch Set: fix usage of GetLocaleInfo Created Oct. 8, 2014, 9:37 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/plugin/PluginSettings.cpp ('k') | src/shared/Communication.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/plugin/PluginSystem.cpp
===================================================================
--- a/src/plugin/PluginSystem.cpp
+++ b/src/plugin/PluginSystem.cpp
@@ -1,35 +1,40 @@
#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;
Eric 2014/10/09 13:49:57 I think that page means that you have nine charact
+ localeLanguage.fill(L'\0');
+ int res = GetLocaleInfoW(lcid, LOCALE_SISO639LANGNAME, localeLanguage.data(), localeLanguage.size());
+ 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;
+ localeCountry.fill(L'\0');
Eric 2014/10/09 13:49:57 Also here.
+ 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;
}
« no previous file with comments | « src/plugin/PluginSettings.cpp ('k') | src/shared/Communication.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld