diff --git a/src/common/stream.cpp b/src/common/stream.cpp index c755d78c9d..774f0b129b 100644 --- a/src/common/stream.cpp +++ b/src/common/stream.cpp @@ -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 {