aboutsummaryrefslogtreecommitdiff
path: root/engines/made/redreader.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2009-10-04 09:31:37 +0000
committerFilippos Karapetis2009-10-04 09:31:37 +0000
commitdecdc5771a6c4733ab4a1276fc60c2454c8340a6 (patch)
treee07fb4c33053c840447cac524fb8e45cb0d77fda /engines/made/redreader.cpp
parent1ed6a2668be5462694c81369cc5abb89e199e2dc (diff)
downloadscummvm-rg350-decdc5771a6c4733ab4a1276fc60c2454c8340a6.tar.gz
scummvm-rg350-decdc5771a6c4733ab4a1276fc60c2454c8340a6.tar.bz2
scummvm-rg350-decdc5771a6c4733ab4a1276fc60c2454c8340a6.zip
Applied patch #2872409 "MADE engine fixes" by agent-q, with one small modification (initialized _soundStarted in the ScriptFunctions constructor)
svn-id: r44589
Diffstat (limited to 'engines/made/redreader.cpp')
-rw-r--r--engines/made/redreader.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/engines/made/redreader.cpp b/engines/made/redreader.cpp
index ac9bcb4610..ca3b2af644 100644
--- a/engines/made/redreader.cpp
+++ b/engines/made/redreader.cpp
@@ -41,16 +41,19 @@ Common::MemoryReadStream *RedReader::load(const char *redFilename, const char *f
byte *fileBuf = (byte *)malloc(fileEntry.origSize);
- LzhDecompressor lzhDec;
- lzhDec.decompress(fd, fileBuf, fileEntry.compSize, fileEntry.origSize);
+ LzhDecompressor* lzhDec = new LzhDecompressor();
+ lzhDec->decompress(fd, fileBuf, fileEntry.compSize, fileEntry.origSize);
+ delete lzhDec;
return new Common::MemoryReadStream(fileBuf, fileEntry.origSize, true);
}
Common::MemoryReadStream *RedReader::loadFromRed(const char *redFilename, const char *filename) {
- RedReader redReader;
- return redReader.load(redFilename, filename);
+ RedReader* red = new RedReader();
+ Common::MemoryReadStream* stream = red->load(redFilename, filename);
+ delete red;
+ return stream;
}
bool RedReader::seekFile(Common::File &fd, FileEntry &fileEntry, const char *filename) {
@@ -82,7 +85,9 @@ LzhDecompressor::~LzhDecompressor() {
int LzhDecompressor::decompress(Common::SeekableReadStream &source, byte *dest, uint32 sourceLen, uint32 destLen) {
int bufsize;
- byte buffer[DICSIZ];
+ byte* buffer;
+
+ buffer = (byte *) malloc(DICSIZ);
_source = &source;
_compSize = sourceLen;
@@ -100,6 +105,8 @@ int LzhDecompressor::decompress(Common::SeekableReadStream &source, byte *dest,
destLen -= bufsize;
}
+ free(buffer);
+
return 0;
}