12
12
#define ARG_INSTALL_ROOT L" --root"
13
13
#define ARG_RUN L" run"
14
14
#define ARG_RUN_C L" -c"
15
- #define CMD_BUF_MAX_LENGTH (LOCALE_NAME_MAX_LENGTH * 4 )
15
+ #define CMD_BUF_MAX_LENGTH (LOCALE_NAME_MAX_LENGTH + 38 )
16
16
#define CMD_AOSC_SET_LOCALE L" echo \" LANG=%s.UTF-8\" > /etc/locale.conf"
17
17
18
18
// Helper class for calling WSL Functions:
@@ -52,7 +52,7 @@ HRESULT InstallDistribution(bool createUser)
52
52
}
53
53
54
54
// Set container locale according to Windows system locale
55
- LPWSTR command = (LPWSTR) malloc ( CMD_BUF_MAX_LENGTH) ;
55
+ wchar_t command[ CMD_BUF_MAX_LENGTH] ;
56
56
if (command == nullptr ) {
57
57
return E_FAIL;
58
58
}
@@ -111,11 +111,7 @@ static HRESULT GenerateLocaleCommand(LPWSTR command_buf)
111
111
HRESULT hr = ERROR_SUCCESS;
112
112
113
113
// Get a buffer which stores locale information.
114
- LPWSTR locale = (LPWSTR)malloc (LOCALE_NAME_MAX_LENGTH * 2 );
115
- if (locale == nullptr ) {
116
- // Failed to get a buffer, we have nothing to do but bailing out.
117
- return CO_E_INIT_MEMORY_ALLOCATOR;
118
- }
114
+ wchar_t locale[LOCALE_NAME_MAX_LENGTH];
119
115
result = GetUserDefaultLocaleName (locale, LOCALE_NAME_MAX_LENGTH);
120
116
if (result <= 0 ) {
121
117
// GetUserDefaultLocaleName() returns the string length of the locale name.
@@ -126,12 +122,10 @@ static HRESULT GenerateLocaleCommand(LPWSTR command_buf)
126
122
}
127
123
Helpers::PrintMessage (MSG_LOCALE_ACQUIRSION_FAILURE);
128
124
}
129
- int i = 0 ;
130
- while (locale[i] != L' \0 ' || i < CMD_BUF_MAX_LENGTH) {
125
+ for (int i = 0 ; locale[i] != L' \0 ' || i < LOCALE_NAME_MAX_LENGTH; i++) {
131
126
if (locale[i] == L' -' ) {
132
127
locale[i] = L' _' ;
133
128
}
134
- i += 1 ;
135
129
}
136
130
hr = StringCchPrintfW (command_buf, CMD_BUF_MAX_LENGTH, CMD_AOSC_SET_LOCALE, locale);
137
131
if (FAILED (hr)) {
0 commit comments