]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sstream.cpp
gcc signed/unsigned warning fix
[wxWidgets.git] / src / common / sstream.cpp
index 51d7effef78822e796faa23244002bd8337e5006..a16ea1b24a1dfe123ebd63e288619fc07fb0144e 100644 (file)
 // construction/destruction
 // ----------------------------------------------------------------------------
 
-wxStringInputStream::wxStringInputStream(const wxString& s)
+// 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) 
 #if wxUSE_UNICODE
     : m_str(s), m_buf(wxMBConvUTF8().cWX2MB(s).release()), m_len(strlen(m_buf))
 #else
-    : m_str(s), m_buf((char*)s.c_str()), m_len(s.length())
+    : m_str(s), m_buf((char*)(const char*)s.c_str()), m_len(s.length())
 #endif
 {
 #if wxUSE_UNICODE
@@ -52,7 +54,8 @@ wxStringInputStream::wxStringInputStream(const wxString& s)
 wxStringInputStream::~wxStringInputStream()
 {
 #if wxUSE_UNICODE
-    delete m_buf;
+    // Note: wx[W]CharBuffer uses malloc()/free()
+    free(m_buf);
 #endif
 }
 
@@ -90,10 +93,11 @@ wxFileOffset wxStringInputStream::OnSysSeek(wxFileOffset ofs, wxSeekMode mode)
             return wxInvalidOffset;
     }
 
-    if ( ofs < 0 || wx_static_cast(size_t, ofs) >= m_len )
+    if ( ofs < 0 || ofs > wx_static_cast(wxFileOffset, m_len) )
         return wxInvalidOffset;
 
-    m_pos = wx_static_cast(size_t, ofs);
+    // FIXME: this can't be right
+    m_pos = wx_truncate_cast(size_t, ofs);
 
     return ofs;
 }
@@ -153,9 +157,10 @@ size_t wxStringOutputStream::OnSysWrite(const void *buffer, size_t size)
     // the literal length
     m_str->Append(wxString(p, m_conv, size));
 
-    // return number of bytes actually written
+    // update position
     m_pos += size;
 
+    // return number of bytes actually written
     return size;
 }