aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorJohannes Schickel2011-04-19 18:08:47 +0200
committerJohannes Schickel2011-04-19 18:08:47 +0200
commitc6112f738312ff6243b3fca1373d4d44ef08ee32 (patch)
tree68787dc02ea7747f3604017f03ab62c4ffa16e5e /common
parent10b0294c9405356a0bd426285d260a108e66c3d2 (diff)
downloadscummvm-rg350-c6112f738312ff6243b3fca1373d4d44ef08ee32.tar.gz
scummvm-rg350-c6112f738312ff6243b3fca1373d4d44ef08ee32.tar.bz2
scummvm-rg350-c6112f738312ff6243b3fca1373d4d44ef08ee32.zip
COMMON: Do not call ReadStream::eos in SubReadStream::read.
Instead I moved the call to ReadStream::eos into SubReadStream::eos. fuzzie pointed out that in certain cases this resulted in a lot of eos calls before. Those were rather needlessly, since checking the eos bit of the decorated stream in read does not give any advantage over checking it when the client code really wants to test the eos flag.
Diffstat (limited to 'common')
-rw-r--r--common/stream.cpp1
-rw-r--r--common/substream.h2
2 files changed, 1 insertions, 2 deletions
diff --git a/common/stream.cpp b/common/stream.cpp
index c0783b2352..1be3fbffea 100644
--- a/common/stream.cpp
+++ b/common/stream.cpp
@@ -205,7 +205,6 @@ uint32 SubReadStream::read(void *dataPtr, uint32 dataSize) {
}
dataSize = _parentStream->read(dataPtr, dataSize);
- _eos |= _parentStream->eos();
_pos += dataSize;
return dataSize;
diff --git a/common/substream.h b/common/substream.h
index dc49ce9ecf..4d90ec5ced 100644
--- a/common/substream.h
+++ b/common/substream.h
@@ -59,7 +59,7 @@ public:
delete _parentStream;
}
- virtual bool eos() const { return _eos; }
+ virtual bool eos() const { return _eos | _parentStream->eos(); }
virtual bool err() const { return _parentStream->err(); }
virtual void clearErr() { _eos = false; _parentStream->clearErr(); }
virtual uint32 read(void *dataPtr, uint32 dataSize);