curl_multibyte: fix a malloc overcalculation

Prior to this change twice as many bytes as necessary were malloc'd when
converting wchar to UTF8. To allay confusion in the future I also
changed the variable name for the amount of bytes from len to bytes.

Closes https://github.com/curl/curl/pull/3209
This commit is contained in:
Jay Satiro 2018-11-01 02:53:22 -04:00
parent 53db15ba55
commit 28429fb175
1 changed files with 6 additions and 6 deletions

View File

@ -64,13 +64,13 @@ char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w)
char *str_utf8 = NULL; char *str_utf8 = NULL;
if(str_w) { if(str_w) {
int str_utf8_len = WideCharToMultiByte(CP_UTF8, 0, str_w, -1, NULL, int bytes = WideCharToMultiByte(CP_UTF8, 0, str_w, -1,
0, NULL, NULL); NULL, 0, NULL, NULL);
if(str_utf8_len > 0) { if(bytes > 0) {
str_utf8 = malloc(str_utf8_len * sizeof(wchar_t)); str_utf8 = malloc(bytes);
if(str_utf8) { if(str_utf8) {
if(WideCharToMultiByte(CP_UTF8, 0, str_w, -1, str_utf8, str_utf8_len, if(WideCharToMultiByte(CP_UTF8, 0, str_w, -1, str_utf8, bytes,
NULL, FALSE) == 0) { NULL, NULL) == 0) {
free(str_utf8); free(str_utf8);
return NULL; return NULL;
} }