aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2011-04-19 18:08:47 +0200
committerJohannes Schickel2011-04-19 18:08:47 +0200
commitc6112f738312ff6243b3fca1373d4d44ef08ee32 (patch)
tree68787dc02ea7747f3604017f03ab62c4ffa16e5e
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.
-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);