Merge miscellaneous string-related fixes

Closes https://github.com/wxWidgets/wxWidgets/pull/237
This commit is contained in:
Vadim Zeitlin
2016-03-02 23:17:23 +01:00
7 changed files with 12 additions and 42 deletions

View File

@@ -134,9 +134,9 @@ public:
return utf16_str(); return utf16_str();
} }
#else #else
wchar_t *wc_str() const const wchar_t *wc_str() const
{ {
return (wchar_t*) c_str(); return c_str();
} }
#endif #endif
@@ -154,18 +154,18 @@ public:
} }
#if wxUSE_UNICODE_UTF8 #if wxUSE_UNICODE_UTF8
wxScopedCharBuffer wx_str() wxScopedCharBuffer wx_str() const
{ {
return utf8_str(); return utf8_str();
} }
#else #else
#if SIZEOF_WCHAR_T == 2 #if SIZEOF_WCHAR_T == 2
wxScopedWCharBuffer wx_str() wxScopedWCharBuffer wx_str() const
{ {
return utf16_str(); return utf16_str();
} }
#else #else
const wchar_t* wx_str() const wchar_t* wx_str() const
{ {
return c_str(); return c_str();
} }

View File

@@ -1953,7 +1953,7 @@ public:
Basically, this is equivalent to calling wxString::GetWriteBuf and Basically, this is equivalent to calling wxString::GetWriteBuf and
saving the result. saving the result.
*/ */
wxStringBufferLength(const wxString& str, size_t len); wxStringBufferLength(wxString& str, size_t len);
/** /**
Restores the string passed to the constructor to the usable state by calling Restores the string passed to the constructor to the usable state by calling
@@ -2014,7 +2014,7 @@ public:
Basically, this is equivalent to calling wxString::GetWriteBuf() and Basically, this is equivalent to calling wxString::GetWriteBuf() and
saving the result. saving the result.
*/ */
wxStringBuffer(const wxString& str, size_t len); wxStringBuffer(wxString& str, size_t len);
/** /**
Restores the string passed to the constructor to the usable state by calling Restores the string passed to the constructor to the usable state by calling

View File

@@ -1388,33 +1388,9 @@ bool wxSetWorkingDirectory(const wxString& d)
{ {
bool success = false; bool success = false;
#if defined(__UNIX__) || defined(__WXMAC__) #if defined(__UNIX__) || defined(__WXMAC__)
success = (chdir(wxFNSTRINGCAST d.fn_str()) == 0); success = (chdir(d.fn_str()) == 0);
#elif defined(__WINDOWS__) #elif defined(__WINDOWS__)
#ifdef __WIN32__
success = (SetCurrentDirectory(d.t_str()) != 0); success = (SetCurrentDirectory(d.t_str()) != 0);
#else
// Must change drive, too.
bool isDriveSpec = ((strlen(d) > 1) && (d[1] == ':'));
if (isDriveSpec)
{
wxChar firstChar = d[0];
// To upper case
if (firstChar > 90)
firstChar = firstChar - 32;
// To a drive number
unsigned int driveNo = firstChar - 64;
if (driveNo > 0)
{
unsigned int noDrives;
_dos_setdrive(driveNo, &noDrives);
}
}
success = (chdir(WXSTRINGCAST d) == 0);
#endif
#endif #endif
if ( !success ) if ( !success )
{ {

View File

@@ -237,7 +237,7 @@ char wxFTP::SendCommand(const wxString& command)
wxString tmp_str = command + wxT("\r\n"); wxString tmp_str = command + wxT("\r\n");
const wxWX2MBbuf tmp_buf = tmp_str.mb_str(); const wxWX2MBbuf tmp_buf = tmp_str.mb_str();
if ( Write(wxMBSTRINGCAST tmp_buf, strlen(tmp_buf)).Error()) if ( Write(static_cast<const char *>(tmp_buf), strlen(tmp_buf)).Error())
{ {
m_lastError = wxPROTO_NETERR; m_lastError = wxPROTO_NETERR;
return 0; return 0;

View File

@@ -122,18 +122,12 @@ static size_t decode_utf16(const wxUint16* input, wxUint32& output)
} }
} }
#ifdef WC_UTF16
typedef wchar_t wxDecodeSurrogate_t;
#else // !WC_UTF16
typedef wxUint16 wxDecodeSurrogate_t;
#endif // WC_UTF16/!WC_UTF16
// returns the next UTF-32 character from the wchar_t buffer and advances the // returns the next UTF-32 character from the wchar_t buffer and advances the
// pointer to the character after this one // pointer to the character after this one
// //
// if an invalid character is found, *pSrc is set to NULL, the caller must // if an invalid character is found, *pSrc is set to NULL, the caller must
// check for this // check for this
static wxUint32 wxDecodeSurrogate(const wxDecodeSurrogate_t **pSrc) static wxUint32 wxDecodeSurrogate(const wxChar16 **pSrc)
{ {
wxUint32 out; wxUint32 out;
const size_t const size_t

View File

@@ -2336,7 +2336,7 @@ void wxPostScriptDCImpl::DoGetTextExtent(const wxString& string,
long sum=0; long sum=0;
float height=fontSize; /* by default */ float height=fontSize; /* by default */
unsigned char *p=(unsigned char *)wxMBSTRINGCAST strbuf; const unsigned char *p=reinterpret_cast<const unsigned char *>(static_cast<const char *>(strbuf));
if(!p) if(!p)
{ {
// String couldn't be converted which used to SEGV as reported here: // String couldn't be converted which used to SEGV as reported here:

View File

@@ -236,7 +236,7 @@ void wxMetafileDCImpl::DoGetTextExtent(const wxString& string,
SIZE sizeRect; SIZE sizeRect;
TEXTMETRIC tm; TEXTMETRIC tm;
::GetTextExtentPoint32(dc, WXSTRINGCAST string, wxStrlen(WXSTRINGCAST string), &sizeRect); ::GetTextExtentPoint32(dc, string.c_str(), string.length(), &sizeRect);
::GetTextMetrics(dc, &tm); ::GetTextMetrics(dc, &tm);
if ( x ) if ( x )