aboutsummaryrefslogtreecommitdiff
path: root/common/zlib.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2012-07-18 06:39:57 -0700
committerJohannes Schickel2012-07-18 06:39:57 -0700
commit966ce6b413c0b29ef66673c6315fb3641ce113f9 (patch)
tree5743c9ee941b88de6c2504da9bc07cd873f7393e /common/zlib.cpp
parentb6000da8753c1a28c2f2f3d0bbd2f1e704674d85 (diff)
parentb398dcabaffbbc53d24d296fed3f64b0b8ecd519 (diff)
downloadscummvm-rg350-966ce6b413c0b29ef66673c6315fb3641ce113f9.tar.gz
scummvm-rg350-966ce6b413c0b29ef66673c6315fb3641ce113f9.tar.bz2
scummvm-rg350-966ce6b413c0b29ef66673c6315fb3641ce113f9.zip
Merge pull request #259 from somaen/zlib_knownSize
COMMON: Add an argument to wrapCompressedReadStream, for streams with unknown size()
Diffstat (limited to 'common/zlib.cpp')
-rw-r--r--common/zlib.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/common/zlib.cpp b/common/zlib.cpp
index 7d765fc539..76e34485da 100644
--- a/common/zlib.cpp
+++ b/common/zlib.cpp
@@ -107,7 +107,7 @@ protected:
public:
- GZipReadStream(SeekableReadStream *w) : _wrapped(w), _stream() {
+ GZipReadStream(SeekableReadStream *w, uint32 knownSize = 0) : _wrapped(w), _stream() {
assert(w != 0);
// Verify file header is correct
@@ -122,7 +122,8 @@ public:
_origSize = w->readUint32LE();
} else {
// Original size not available in zlib format
- _origSize = 0;
+ // use an otherwise known size if supplied.
+ _origSize = knownSize;
}
_pos = 0;
w->seek(0, SEEK_SET);
@@ -336,7 +337,7 @@ public:
#endif // USE_ZLIB
-SeekableReadStream *wrapCompressedReadStream(SeekableReadStream *toBeWrapped) {
+SeekableReadStream *wrapCompressedReadStream(SeekableReadStream *toBeWrapped, uint32 knownSize) {
#if defined(USE_ZLIB)
if (toBeWrapped) {
uint16 header = toBeWrapped->readUint16BE();
@@ -345,7 +346,7 @@ SeekableReadStream *wrapCompressedReadStream(SeekableReadStream *toBeWrapped) {
header % 31 == 0));
toBeWrapped->seek(-2, SEEK_CUR);
if (isCompressed)
- return new GZipReadStream(toBeWrapped);
+ return new GZipReadStream(toBeWrapped, knownSize);
}
#endif
return toBeWrapped;