aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicola Mettifogo2008-12-07 12:41:50 +0000
committerNicola Mettifogo2008-12-07 12:41:50 +0000
commitdb88c544b75daa213130092da1b4ef2d0f61ff22 (patch)
tree4c0b26a19fdf498028c01452c82854755493a0d3
parent00de4b2b3cc878b776b64f576a8527f4f916567d (diff)
downloadscummvm-rg350-db88c544b75daa213130092da1b4ef2d0f61ff22.tar.gz
scummvm-rg350-db88c544b75daa213130092da1b4ef2d0f61ff22.tar.bz2
scummvm-rg350-db88c544b75daa213130092da1b4ef2d0f61ff22.zip
Fixed assorted leaks in Parallaction.
svn-id: r35270
-rw-r--r--engines/parallaction/disk_br.cpp3
-rw-r--r--engines/parallaction/graphics.cpp2
-rw-r--r--engines/parallaction/inventory.cpp2
-rw-r--r--engines/parallaction/parallaction.h4
-rw-r--r--engines/parallaction/parallaction_br.cpp7
-rw-r--r--engines/parallaction/parallaction_ns.cpp4
-rw-r--r--engines/parallaction/parser.h19
7 files changed, 23 insertions, 18 deletions
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;
-
- }
-
};