]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sstream.cpp
fixed MSVC6 warning
[wxWidgets.git] / src / common / sstream.cpp
index 7ceedb65b59db5aecc3e37edb92698e7069deac5..84bf9c376dba47b24889e0be8be6036c19c827b0 100644 (file)
 // seek/tell
 // ----------------------------------------------------------------------------
 
-off_t wxStringInputStream::OnSysSeek(off_t ofs, wxSeekMode mode)
+wxFileOffset wxStringInputStream::OnSysSeek(wxFileOffset ofs, wxSeekMode mode)
 {
+    const size_t ofsMax = m_str.length()*sizeof(wxChar);
+
     switch ( mode )
     {
         case wxFromStart:
@@ -45,7 +47,7 @@ off_t wxStringInputStream::OnSysSeek(off_t ofs, wxSeekMode mode)
             break;
 
         case wxFromEnd:
-            ofs += m_str.length()*sizeof(wxChar);
+            ofs += ofsMax;
             break;
 
         case wxFromCurrent:
@@ -57,14 +59,17 @@ off_t wxStringInputStream::OnSysSeek(off_t ofs, wxSeekMode mode)
             return wxInvalidOffset;
     }
 
+    if ( ofs < 0 || wx_static_cast(size_t, ofs) >= ofsMax )
+        return wxInvalidOffset;
+
     m_pos = wx_static_cast(size_t, ofs);
 
     return ofs;
 }
 
-off_t wxStringInputStream::OnSysTell() const
+wxFileOffset wxStringInputStream::OnSysTell() const
 {
-    return wx_static_cast(off_t, m_pos);
+    return wx_static_cast(wxFileOffset, m_pos);
 }
 
 // ----------------------------------------------------------------------------
@@ -96,6 +101,15 @@ size_t wxStringInputStream::OnSysRead(void *buffer, size_t size)
 // wxStringOutputStream implementation
 // ============================================================================
 
+// ----------------------------------------------------------------------------
+// seek/tell
+// ----------------------------------------------------------------------------
+
+wxFileOffset wxStringOutputStream::OnSysTell() const
+{
+    return wx_static_cast(wxFileOffset, m_pos);
+}
+
 // ----------------------------------------------------------------------------
 // actual IO
 // ----------------------------------------------------------------------------
@@ -107,10 +121,13 @@ size_t wxStringOutputStream::OnSysWrite(const void *buffer, size_t size)
 
     const wxChar *p = wx_static_cast(const wxChar *, buffer);
 
-    m_str->Append(wxString(p, p + len + 1));
+    m_str->Append(wxString(p, p + len));
 
     // return number of bytes actually written
-    return len*sizeof(wxChar);
+    len *= sizeof(wxChar);
+    m_pos += len;
+
+    return len;
 }
 
 #endif // wxUSE_STREAMS