]> git.saurik.com Git - wxWidgets.git/commitdiff
Bug fix in wxBufferedInputStream::SeekI
authorGuilhem Lavaux <lavaux@easynet.fr>
Fri, 13 Aug 1999 17:49:02 +0000 (17:49 +0000)
committerGuilhem Lavaux <lavaux@easynet.fr>
Fri, 13 Aug 1999 17:49:02 +0000 (17:49 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3371 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/stream.cpp

index c755d78c9d1549b439c0ad267f5bb9519cdb98c6..774f0b129b3e6eff63343979fd16f246b007e688 100644 (file)
@@ -371,7 +371,13 @@ off_t wxStreamBuffer::Seek(off_t pos, wxSeekMode mode)
     diff = pos + GetIntPosition();
 
     if ( (diff > last_access) || (diff < 0) ) {
-      ret_off = m_stream->OnSysSeek(pos, wxFromCurrent);
+      // We must take into account the fact that we have read something
+      // previously.
+      if (diff < 0)
+        ret_off = m_stream->OnSysSeek(-(last_access-diff), wxFromCurrent);
+           // lastaccess + abs(diff) = lastaccess - diff here
+      else
+        ret_off = m_stream->OnSysSeek(diff-last_access, wxFromCurrent);
       ResetBuffer();
       return ret_off;
     } else {