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: remove intializating call Created Oct. 13, 2014, 9:47 a.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
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;
}

Powered by Google App Engine
This is Rietveld