From db88c544b75daa213130092da1b4ef2d0f61ff22 Mon Sep 17 00:00:00 2001 From: Nicola Mettifogo Date: Sun, 7 Dec 2008 12:41:50 +0000 Subject: Fixed assorted leaks in Parallaction. svn-id: r35270 --- engines/parallaction/disk_br.cpp | 3 +-- engines/parallaction/graphics.cpp | 2 ++ engines/parallaction/inventory.cpp | 2 +- engines/parallaction/parallaction.h | 4 ++-- engines/parallaction/parallaction_br.cpp | 7 +++++++ engines/parallaction/parallaction_ns.cpp | 4 +++- engines/parallaction/parser.h | 19 +++++++------------ 7 files changed, 23 insertions(+), 18 deletions(-) (limited to 'engines/parallaction') diff --git a/engines/parallaction/disk_br.cpp b/engines/parallaction/disk_br.cpp index cee493f94a..4b7de5c817 100644 --- a/engines/parallaction/disk_br.cpp +++ b/engines/parallaction/disk_br.cpp @@ -143,12 +143,11 @@ void DosDisk_br::setLanguage(uint16 language) { DosDisk_br::DosDisk_br(Parallaction* vm) : Disk_br(vm) { } - void DosDisk_br::init() { // TODO: clarify whether the engine or OSystem should add the base game directory to the search manager. // Right now, I am keeping an internal search set to do the job. _baseDir = new Common::FSDirectory(ConfMan.get("path")); - _sset.add("base", _baseDir, 5, false); + _sset.add("base", _baseDir, 5, true); } diff --git a/engines/parallaction/graphics.cpp b/engines/parallaction/graphics.cpp index 6aeb7a859f..f9fb26fcec 100644 --- a/engines/parallaction/graphics.cpp +++ b/engines/parallaction/graphics.cpp @@ -839,6 +839,8 @@ Gfx::Gfx(Parallaction* vm) : Gfx::~Gfx() { + _backBuffer.free(); + delete _backgroundInfo; freeLabels(); diff --git a/engines/parallaction/inventory.cpp b/engines/parallaction/inventory.cpp index 7b92974205..51eed6a90b 100644 --- a/engines/parallaction/inventory.cpp +++ b/engines/parallaction/inventory.cpp @@ -180,7 +180,7 @@ void InventoryRenderer::showInventory() { uint16 lines = getNumLines(); Common::Point p; - _vm->_input->getCursorPos(p); + _vm->_input->getAbsoluteCursorPos(p); _pos.x = CLIP((int)(p.x - (_props->_width / 2)), 0, (int)(_vm->_screenWidth - _props->_width)); _pos.y = CLIP((int)(p.y - 2 - (lines * _props->_itemHeight)), 0, (int)(_vm->_screenHeight - lines * _props->_itemHeight)); diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h index d63b62cea4..f9d9265ac6 100644 --- a/engines/parallaction/parallaction.h +++ b/engines/parallaction/parallaction.h @@ -372,7 +372,7 @@ public: class Parallaction_ns : public Parallaction { public: - Parallaction_ns(OSystem* syst, const PARALLACTIONGameDescription *gameDesc) : Parallaction(syst, gameDesc) { } + Parallaction_ns(OSystem* syst, const PARALLACTIONGameDescription *gameDesc); ~Parallaction_ns(); // Engine APIs @@ -463,7 +463,7 @@ private: class Parallaction_br : public Parallaction_ns { public: - Parallaction_br(OSystem* syst, const PARALLACTIONGameDescription *gameDesc) : Parallaction_ns(syst, gameDesc) { } + Parallaction_br(OSystem* syst, const PARALLACTIONGameDescription *gameDesc); ~Parallaction_br(); Common::Error init(); diff --git a/engines/parallaction/parallaction_br.cpp b/engines/parallaction/parallaction_br.cpp index 019dc1836b..15ebc219b3 100644 --- a/engines/parallaction/parallaction_br.cpp +++ b/engines/parallaction/parallaction_br.cpp @@ -42,6 +42,10 @@ const char *Parallaction_br::_partNames[] = { "PART4" }; +Parallaction_br::Parallaction_br(OSystem* syst, const PARALLACTIONGameDescription *gameDesc) : Parallaction_ns(syst, gameDesc), + _locationParser(0), _programParser(0) { +} + Common::Error Parallaction_br::init() { _screenWidth = 640; @@ -96,6 +100,9 @@ Common::Error Parallaction_br::init() { Parallaction_br::~Parallaction_br() { freeFonts(); + + delete _locationParser; + delete _programParser; } void Parallaction_br::callFunction(uint index, void* parm) { diff --git a/engines/parallaction/parallaction_ns.cpp b/engines/parallaction/parallaction_ns.cpp index 31b27c4d5f..ff806533f1 100644 --- a/engines/parallaction/parallaction_ns.cpp +++ b/engines/parallaction/parallaction_ns.cpp @@ -141,7 +141,9 @@ void LocationName::bind(const char *s) { strcpy(_buf, s); // kept as reference } - +Parallaction_ns::Parallaction_ns(OSystem* syst, const PARALLACTIONGameDescription *gameDesc) : Parallaction(syst, gameDesc), + _locationParser(0), _programParser(0) { +} Common::Error Parallaction_ns::init() { diff --git a/engines/parallaction/parser.h b/engines/parallaction/parser.h index 9c894952f2..9c7f9e3d71 100644 --- a/engines/parallaction/parser.h +++ b/engines/parallaction/parser.h @@ -69,7 +69,7 @@ class Parser { public: Parser() { reset(); } - ~Parser() {} + ~Parser() { reset(); } uint _lookup; @@ -216,7 +216,8 @@ protected: } public: - LocationParser_ns(Parallaction_ns *vm) : _vm(vm) { + LocationParser_ns(Parallaction_ns *vm) : _vm(vm), _commandsNames(0), _locationStmt(0), + _locationZoneStmt(0), _locationAnimStmt(0) { } virtual void init(); @@ -307,14 +308,14 @@ protected: void parseGetData(ZonePtr z); public: - LocationParser_br(Parallaction_br *vm) : LocationParser_ns((Parallaction_ns*)vm), _vm(vm) { + LocationParser_br(Parallaction_br *vm) : LocationParser_ns((Parallaction_ns*)vm), _vm(vm), + _audioCommandsNames(0) { } virtual void init(); virtual ~LocationParser_br() { - delete _commandsNames; - delete _locationStmt; + delete _audioCommandsNames; } void parse(Script *script); @@ -374,7 +375,7 @@ protected: } public: - ProgramParser_ns(Parallaction_ns *vm) : _vm(vm) { + ProgramParser_ns(Parallaction_ns *vm) : _vm(vm), _parser(0), _instructionNames(0) { } virtual void init(); @@ -412,12 +413,6 @@ public: virtual void init(); - virtual ~ProgramParser_br() { - delete _instructionNames; - delete _parser; - - } - }; -- cgit v1.2.3