From c7195026a01d76d5c185d7e3069e9aea4d4f8470 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 7 Oct 2002 23:11:41 +0000 Subject: [PATCH] no changes, finally git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/strconv.cpp | 52 +++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index 7c861f9daf..723408f20c 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -766,6 +766,12 @@ size_t IC_CharSet::WC2MB(char *buf, const wchar_t *psz, size_t n) #if defined(__WIN32__) && !defined(__WXMICROWIN__) +#ifdef __WXWINE__ + #define WINE_CAST (WCHAR *) +#else + #define WINE_CAST +#endif + extern long wxCharsetToCodepage(const wxChar *charset); // from utils.cpp class CP_CharSet : public wxCharacterSet @@ -779,29 +785,37 @@ public: size_t MB2WC(wchar_t *buf, const char *psz, size_t n) { - size_t len = -#ifdef __WXWINE__ - MultiByteToWideChar(m_CodePage, 0, psz, -1, (WCHAR*) buf, buf ? n : 0); -#else - MultiByteToWideChar(m_CodePage, 0, psz, -1, buf, buf ? n : 0); -#endif - //VS: returns # of written chars for buf!=NULL and *size* - // needed buffer for buf==NULL - return len ? (buf ? len : len-1) : (size_t)-1; + const size_t len = ::MultiByteToWideChar + ( + m_CodePage, // code page + 0, // flags (none) + psz, // input string + -1, // its length (NUL-terminated) + WINE_CAST buf, // output string + buf ? n : 0 // size of output buffer + ); + + // note that it returns # of written chars for buf != NULL and *size* + // of the needed buffer for buf == NULL + return len ? (buf ? len : len - 1) : (size_t)-1; } size_t WC2MB(char *buf, const wchar_t *psz, size_t n) { -#ifdef __WXWINE__ - size_t len = WideCharToMultiByte(m_CodePage, 0, (const WCHAR*) psz, -1, buf, - buf ? n : 0, NULL, NULL); -#else - size_t len = WideCharToMultiByte(m_CodePage, 0, psz, -1, buf, - buf ? n : 0, NULL, NULL); -#endif - //VS: returns # of written chars for buf!=NULL and *size* - // needed buffer for buf==NULL - return len ? (buf ? len : len-1) : (size_t)-1; + const size_t len = ::WideCharToMultiByte + ( + m_CodePage, // code page + 0, // flags (none) + WINE_CAST psz, // input string + -1, // it is (wide) NUL-terminated + buf, // output buffer + buf ? n : 0, // and its size + NULL, // default "replacement" char + NULL // [out] was it used? + ); + + // see the comment above! + return len ? (buf ? len : len - 1) : (size_t)-1; } bool usable() const