X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d7f73361b999778884506a6c7ce2a1548d53a094..4f1cf94b942cbf62616a8a1a066b1a13ff6af792:/src/common/txtstrm.cpp diff --git a/src/common/txtstrm.cpp b/src/common/txtstrm.cpp index cbc90a4dae..010fe739f6 100644 --- a/src/common/txtstrm.cpp +++ b/src/common/txtstrm.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: txtstrm.cpp +// Name: src/common/txtstrm.cpp // Purpose: Text stream classes // Author: Guilhem Lavaux // Modified by: @@ -18,6 +18,10 @@ #if wxUSE_STREAMS +#ifndef WX_PRECOMP + #include "wx/crt.h" +#endif + #include "wx/txtstrm.h" #include @@ -73,6 +77,9 @@ wxChar wxTextInputStream::NextChar() memset((void*)m_lastBytes, 0, 10); for(size_t inlen = 0; inlen < 9; inlen++) { + if (!m_input.CanRead()) + return wxEOT; + // actually read the next character m_lastBytes[inlen] = m_input.GetC(); @@ -86,6 +93,9 @@ wxChar wxTextInputStream::NextChar() // there should be no encoding which requires more than nine bytes for one character... return wxEOT; #else + if (!m_input.CanRead()) + return wxEOT; + m_lastBytes[0] = m_input.GetC(); if(m_input.LastRead() <= 0) @@ -178,11 +188,15 @@ double wxTextInputStream::ReadDouble() return wxStrtod(word.c_str(), 0); } +#if WXWIN_COMPATIBILITY_2_6 + wxString wxTextInputStream::ReadString() { return ReadLine(); } +#endif // WXWIN_COMPATIBILITY_2_6 + wxString wxTextInputStream::ReadLine() { wxString line; @@ -193,9 +207,6 @@ wxString wxTextInputStream::ReadLine() if(c == wxEOT) break; - if ( !m_input ) - break; - if (EatEOL(c)) break; @@ -414,10 +425,10 @@ void wxTextOutputStream::WriteString(const wxString& string) out << c; } - // We must not write the trailing NULL here #if wxUSE_UNICODE - wxCharBuffer buffer = m_conv->cWC2MB( out ); - m_output.Write( (const char*) buffer, strlen( (const char*) buffer ) ); + // FIXME-UTF8: use wxCharBufferWithLength if/when we have it + wxCharBuffer buffer = m_conv->cWC2MB(out.wc_str(), out.length(), &len); + m_output.Write(buffer, len); #else m_output.Write(out.c_str(), out.length() ); #endif @@ -433,12 +444,6 @@ wxTextOutputStream& wxTextOutputStream::PutChar(wxChar c) return *this; } -wxTextOutputStream& wxTextOutputStream::operator<<(const wxChar *string) -{ - WriteString( wxString(string) ); - return *this; -} - wxTextOutputStream& wxTextOutputStream::operator<<(const wxString& string) { WriteString( string );