From 51843bc3b367eda4f7c3cdcbee7c007c5574b706 Mon Sep 17 00:00:00 2001 From: Dmitry Iskrich Date: Fri, 10 Jun 2016 19:27:35 +0300 Subject: [PATCH] DIRECTOR: Fix memory leak --- engines/director/score.cpp | 12 ++++++++++++ engines/director/score.h | 1 + 2 files changed, 13 insertions(+) diff --git a/engines/director/score.cpp b/engines/director/score.cpp index d1c198fe59de..2f9f619eec3b 100644 --- a/engines/director/score.cpp +++ b/engines/director/score.cpp @@ -95,6 +95,14 @@ Score::Score(Archive &movie, Lingo &lingo) { } +Score::~Score() { + _surface->free(); + delete _surface; + + _movieArchive->close(); + delete _movieArchive; +} + void Score::loadFrames(Common::SeekableReadStream &stream) { uint32 size = stream.readUint32BE(); size -= 4; @@ -538,6 +546,10 @@ Frame::~Frame() { for (uint16 i = 0; i < _sprites.size(); i++) { delete _sprites[i]; } + + for (uint16 i = 0; i < _drawRects.size(); i++) { + delete _drawRects[i]; + } } void Frame::readChannel(Common::SeekableReadStream &stream, uint16 offset, uint16 size) { diff --git a/engines/director/score.h b/engines/director/score.h index 00c32943944d..3cebbbf542c0 100644 --- a/engines/director/score.h +++ b/engines/director/score.h @@ -265,6 +265,7 @@ class Frame { class Score { public: Score(Archive &movie, Lingo &lingo); + ~Score(); static Common::Rect readRect(Common::SeekableReadStream &stream); void startLoop();