From decdc5771a6c4733ab4a1276fc60c2454c8340a6 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Sun, 4 Oct 2009 09:31:37 +0000 Subject: Applied patch #2872409 "MADE engine fixes" by agent-q, with one small modification (initialized _soundStarted in the ScriptFunctions constructor) svn-id: r44589 --- engines/made/redreader.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'engines/made/redreader.cpp') 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; } -- cgit v1.2.3