X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2c17722ec8a15d93ef9ec4a4ff390a0db9a34d9d..12b5f4b4d2d8a07962da7ba3b78c8c1ec2634a67:/src/common/sstream.cpp diff --git a/src/common/sstream.cpp b/src/common/sstream.cpp index f92916a667..740ebbf551 100644 --- a/src/common/sstream.cpp +++ b/src/common/sstream.cpp @@ -38,27 +38,20 @@ // TODO: Do we want to include the null char in the stream? If so then // just add +1 to m_len in the ctor -wxStringInputStream::wxStringInputStream(const wxString& s) +wxStringInputStream::wxStringInputStream(const wxString& s) #if wxUSE_UNICODE - : m_str(s), m_buf(wxMBConvUTF8().cWX2MB(s).release()), m_len(strlen(m_buf)) + // FIXME-UTF8: use wxCharBufferWithLength if we have it + : m_str(s), m_buf(s.utf8_str()), m_len(strlen(m_buf)) #else - : m_str(s), m_buf((char*)(const char*)s.c_str()), m_len(s.length()) + : m_str(s), m_buf(s.mb_str()), m_len(s.length()) #endif { #if wxUSE_UNICODE - wxASSERT_MSG(m_buf != NULL, _T("Could not convert string to UTF8!")); + wxASSERT_MSG(m_buf.data() != NULL, _T("Could not convert string to UTF8!")); #endif m_pos = 0; } -wxStringInputStream::~wxStringInputStream() -{ -#if wxUSE_UNICODE - // Note: wx[W]CharBuffer uses malloc()/free() - free(m_buf); -#endif -} - // ---------------------------------------------------------------------------- // getlength // ---------------------------------------------------------------------------- @@ -93,7 +86,7 @@ wxFileOffset wxStringInputStream::OnSysSeek(wxFileOffset ofs, wxSeekMode mode) return wxInvalidOffset; } - if ( ofs < 0 || ofs > wx_static_cast(wxFileOffset, m_len) ) + if ( ofs < 0 || ofs > static_cast(m_len) ) return wxInvalidOffset; // FIXME: this can't be right @@ -104,7 +97,7 @@ wxFileOffset wxStringInputStream::OnSysSeek(wxFileOffset ofs, wxSeekMode mode) wxFileOffset wxStringInputStream::OnSysTell() const { - return wx_static_cast(wxFileOffset, m_pos); + return static_cast(m_pos); } // ---------------------------------------------------------------------------- @@ -126,7 +119,7 @@ size_t wxStringInputStream::OnSysRead(void *buffer, size_t size) size = sizeMax; } - memcpy(buffer, m_buf + m_pos, size); + memcpy(buffer, m_buf.data() + m_pos, size); m_pos += size; return size; @@ -142,7 +135,7 @@ size_t wxStringInputStream::OnSysRead(void *buffer, size_t size) wxFileOffset wxStringOutputStream::OnSysTell() const { - return wx_static_cast(wxFileOffset, m_pos); + return static_cast(m_pos); } // ---------------------------------------------------------------------------- @@ -151,7 +144,7 @@ wxFileOffset wxStringOutputStream::OnSysTell() const size_t wxStringOutputStream::OnSysWrite(const void *buffer, size_t size) { - const char *p = wx_static_cast(const char *, buffer); + const char *p = static_cast(buffer); #if wxUSE_UNICODE_WCHAR // the part of the string we have here may be incomplete, i.e. it can stop @@ -174,13 +167,14 @@ size_t wxStringOutputStream::OnSysWrite(const void *buffer, size_t size) srcLen = size; } - wxWCharBuffer wbuf(m_conv.cMB2WC(src, srcLen, NULL /* out len */)); + size_t wlen; + wxWCharBuffer wbuf(m_conv.cMB2WC(src, srcLen, &wlen)); if ( wbuf ) { // conversion succeeded, clear the unconverted buffer m_unconv = wxMemoryBuffer(0); - *m_str += wbuf; + m_str->append(wbuf, wlen); } else // conversion failed {