Reputation: 21154
The question is simple: what's frong with this piece of code?
size_t buff = 1;
size_t new_buff;
WCHAR *var_path;
WCHAR *dir_path;
var_path = new WCHAR[buff];
new_buff = GetEnvironmentVariableW(L"APPDATA", var_path, buff);
if (new_buff == 0) {
return 1;
} else if (new_buff > buff) {
delete[] var_path;
var_path = new WCHAR[new_buff];
GetEnvironmentVariableW(L"APPDATA", var_path, new_buff);
}
dir_path = new WCHAR[new_buff];
wcscpy_s(dir_path, new_buff, var_path);
wcscat_s(dir_path, new_buff, L"\\directory");
It says that the Buffer is too small on wcscat_s
Upvotes: 0
Views: 1131
Reputation: 409404
You only allocate new_buff
characters for dir_path
(and tell wcscat_s
about that size), then you want to append more characters to it. You need to allocate new_buff
plus the length of L"\\directory"
, as well as tell wcscat_s
about that actual size.
Upvotes: 1