diff options
author | Johannes Schickel | 2012-07-18 06:39:57 -0700 |
---|---|---|
committer | Johannes Schickel | 2012-07-18 06:39:57 -0700 |
commit | 966ce6b413c0b29ef66673c6315fb3641ce113f9 (patch) | |
tree | 5743c9ee941b88de6c2504da9bc07cd873f7393e /common/zlib.cpp | |
parent | b6000da8753c1a28c2f2f3d0bbd2f1e704674d85 (diff) | |
parent | b398dcabaffbbc53d24d296fed3f64b0b8ecd519 (diff) | |
download | scummvm-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.cpp | 9 |
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; |