mirror of https://github.com/moparisthebest/curl
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:
parent
53db15ba55
commit
28429fb175
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue