]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sstream.cpp
Added part of patch
[wxWidgets.git] / src / common / sstream.cpp
index cd9a0a1cdcf6adccec1c4fd6ef2362eccec23279..8033dff28c97ced7ec0777d2b3843c0948b74f62 100644 (file)
@@ -36,7 +36,9 @@
 // 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
@@ -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;
 }