diff options
author | Max Horn | 2009-03-05 20:37:53 +0000 |
---|---|---|
committer | Max Horn | 2009-03-05 20:37:53 +0000 |
commit | 05b4370c21b3abf7a1ff6aa83194cf95ab73579c (patch) | |
tree | a4d2cecedc5735d3205489e50610f85ca57be348 /common | |
parent | 2017d1c9ea12968e80a7aaeed1d9289f39c3a96e (diff) | |
download | scummvm-rg350-05b4370c21b3abf7a1ff6aa83194cf95ab73579c.tar.gz scummvm-rg350-05b4370c21b3abf7a1ff6aa83194cf95ab73579c.tar.bz2 scummvm-rg350-05b4370c21b3abf7a1ff6aa83194cf95ab73579c.zip |
Fix for bug #2664460: Various SeekableReadStream::seek() implementations (as well as our unit tests, ouch) handled SEEK_END incorrectly (using -offset instead of offset), contrary to what the docs said and what fseek does. Hopefully I found and fixed all affected parts, but still watch out for regressions
svn-id: r39135
Diffstat (limited to 'common')
-rw-r--r-- | common/stream.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/common/stream.cpp b/common/stream.cpp index 1cdcd50723..8614939e54 100644 --- a/common/stream.cpp +++ b/common/stream.cpp @@ -69,7 +69,7 @@ bool MemoryReadStream::seek(int32 offs, int whence) { case SEEK_END: // SEEK_END works just like SEEK_SET, only 'reversed', // i.e. from the end. - offs = _size - offs; + offs = _size + offs; // Fall through case SEEK_SET: _ptr = _ptrOrig + offs; @@ -204,7 +204,7 @@ bool SeekableSubReadStream::seek(int32 offset, int whence) { switch(whence) { case SEEK_END: - offset = size() - offset; + offset = size() + offset; // fallthrough case SEEK_SET: _pos = _begin + offset; |