aboutsummaryrefslogtreecommitdiff
path: root/common/zlib.cpp
diff options
context:
space:
mode:
authorAlyssa Milburn2012-08-28 15:39:00 +0200
committerAlyssa Milburn2012-08-28 15:54:12 +0200
commit31801137b5c6908edd76f357b3f29b07e9e3be84 (patch)
tree33e973717545ae27da6ba4996d0d8fe1bcd437b3 /common/zlib.cpp
parent35fd91793b34b72624a89f2a76f45bc8e59020d2 (diff)
parent6ab8db638e4a1d547ee67db067b5d6c3d6c940a4 (diff)
downloadscummvm-rg350-31801137b5c6908edd76f357b3f29b07e9e3be84.tar.gz
scummvm-rg350-31801137b5c6908edd76f357b3f29b07e9e3be84.tar.bz2
scummvm-rg350-31801137b5c6908edd76f357b3f29b07e9e3be84.zip
Merge remote-tracking branch 'origin/master' into tony
Conflicts: common/coroutines.cpp common/coroutines.h devtools/create_project/msbuild.cpp devtools/create_project/visualstudio.cpp
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 98f319f351..fc8f351054 100644
--- a/common/zlib.cpp
+++ b/common/zlib.cpp
@@ -161,7 +161,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
@@ -176,7 +176,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);
@@ -390,7 +391,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();
@@ -399,7 +400,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;