diff options
-rw-r--r-- | engines/gargoyle/streams.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/engines/gargoyle/streams.cpp b/engines/gargoyle/streams.cpp index 659fcd00d6..41f3caf1b4 100644 --- a/engines/gargoyle/streams.cpp +++ b/engines/gargoyle/streams.cpp @@ -459,29 +459,31 @@ glui32 MemoryStream::getPosition() const { } void MemoryStream::setPosition(glui32 pos, glui32 seekMode) { + glsi32 newPos = pos; + if (!_unicode) { if (seekMode == seekmode_Current) - pos = ((unsigned char *)_bufPtr - (unsigned char *)_buf) + pos; + newPos = ((unsigned char *)_bufPtr - (unsigned char *)_buf) + newPos; else if (seekMode == seekmode_End) - pos = ((unsigned char *)_bufEof - (unsigned char *)_buf) + pos; + newPos = ((unsigned char *)_bufEof - (unsigned char *)_buf) + newPos; else - /* pos = pos */; - if (pos < 0) - pos = 0; - if (pos > (glui32)((unsigned char *)_bufEof - (unsigned char *)_buf)) - pos = ((unsigned char *)_bufEof - (unsigned char *)_buf); - _bufPtr = (unsigned char *)_buf + pos; + /* newPos = newPos */; + if (newPos < 0) + newPos = 0; + if (newPos > ((unsigned char *)_bufEof - (unsigned char *)_buf)) + newPos = ((unsigned char *)_bufEof - (unsigned char *)_buf); + _bufPtr = (unsigned char *)_buf + newPos; } else { if (seekMode == seekmode_Current) - pos = ((glui32 *)_bufPtr - (glui32 *)_buf) + pos; + newPos = ((glui32 *)_bufPtr - (glui32 *)_buf) + newPos; else if (seekMode == seekmode_End) - pos = ((glui32 *)_bufEof - (glui32 *)_buf) + pos; + newPos = ((glui32 *)_bufEof - (glui32 *)_buf) + newPos; - if (pos < 0) - pos = 0; - if (pos > (glui32)((glui32 *)_bufEof - (glui32 *)_buf)) - pos = ((glui32 *)_bufEof - (glui32 *)_buf); - _bufPtr = (glui32 *)_buf + pos; + if (newPos < 0) + newPos = 0; + if (newPos > ((glui32 *)_bufEof - (glui32 *)_buf)) + newPos = ((glui32 *)_bufEof - (glui32 *)_buf); + _bufPtr = (glui32 *)_buf + newPos; } } |