summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJavier Blazquez <jblazquez@riotgames.com>2020-09-23 17:33:21 -0700
committerDaniel Stenberg <daniel@haxx.se>2020-09-25 08:55:35 +0200
commitbed5f8454a4b673ab4103901362fbd7b3e0aa754 (patch)
tree0dc3b219936aab0265b1086e85987f3460c3f18d /lib
parentc4693adc62e44e7abaa6a8aa2180693bcf120b43 (diff)
downloadcurl-bed5f8454a4b673ab4103901362fbd7b3e0aa754.tar.gz
strerror: honor Unicode API choice on Windows
Closes #6005
Diffstat (limited to 'lib')
-rw-r--r--lib/strerror.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/lib/strerror.c b/lib/strerror.c
index 5893f49a9..fef5c2bca 100644
--- a/lib/strerror.c
+++ b/lib/strerror.c
@@ -44,6 +44,7 @@
#endif
#include "strerror.h"
+#include "curl_multibyte.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
@@ -661,28 +662,19 @@ get_winapi_error(int err, char *buf, size_t buflen)
*buf = '\0';
-#ifdef _WIN32_WCE
{
- wchar_t wbuf[256];
+ TCHAR wbuf[256];
wbuf[0] = L'\0';
if(FormatMessage((FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err,
- LANG_NEUTRAL, wbuf, sizeof(wbuf)/sizeof(wchar_t), NULL)) {
- size_t written = wcstombs(buf, wbuf, buflen - 1);
- if(written != (size_t)-1)
- buf[written] = '\0';
- else
- *buf = '\0';
+ LANG_NEUTRAL, wbuf, sizeof(wbuf)/sizeof(TCHAR), NULL)) {
+ char *msg = curlx_convert_tchar_to_UTF8(wbuf);
+ strncpy(buf, msg, buflen - 1);
+ buf[buflen-1] = '\0';
+ curlx_unicodefree(msg);
}
}
-#else
- if(!FormatMessageA((FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err,
- LANG_NEUTRAL, buf, (DWORD)buflen, NULL)) {
- *buf = '\0';
- }
-#endif
/* Truncate multiple lines */
p = strchr(buf, '\n');