]> sigrok.org Git - libserialport.git/commitdiff
windows: Use correct variant of FormatMessage.
authorMartin Ling <redacted>
Fri, 24 Jan 2020 04:30:22 +0000 (04:30 +0000)
committerMartin Ling <redacted>
Fri, 24 Jan 2020 05:39:16 +0000 (05:39 +0000)
When built with MSVC and unicode enabled, using 'message' gave:

warning C4133: 'initializing': incompatible types - from 'TCHAR *' to 'char *'

FormatMessage expands to either FormatMessageA or FormatMessageW
depending if unicode is enabled, and generates either a char (8-bit)
or WCHAR (UTF-16) string accordingly.

Since sp_last_error_message() returns char *, we must use the 8-bit
variant. The message will be encoded in the current code page.

serialport.c

index 0a466887da1eddcbe72f642e007c0fb90417bdf1..eee453a276155d667a1a32894c62788891bc42aa 100644 (file)
@@ -2478,17 +2478,17 @@ SP_API char *sp_last_error_message(void)
        TRACE_VOID();
 
 #ifdef _WIN32
-       TCHAR *message;
+       char *message;
        DWORD error = GetLastError();
 
-       DWORD length = FormatMessage(
+       DWORD length = FormatMessageA(
                FORMAT_MESSAGE_ALLOCATE_BUFFER |
                FORMAT_MESSAGE_FROM_SYSTEM |
                FORMAT_MESSAGE_IGNORE_INSERTS,
                NULL,
                error,
                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-               (LPTSTR) &message,
+               (LPSTR) &message,
                0, NULL );
 
        if (length >= 2 && message[length - 2] == '\r')