aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Hesse2009-06-25 10:54:35 +0000
committerSven Hesse2009-06-25 10:54:35 +0000
commit88062e90a00112e8c959edf7adac83db489198c2 (patch)
tree4e4a898053960bba951fa057dfca6abe78e1ff7b
parent33a836fc5661d1c3b7fcf73248a32aca63e4e9a5 (diff)
downloadscummvm-rg350-88062e90a00112e8c959edf7adac83db489198c2.tar.gz
scummvm-rg350-88062e90a00112e8c959edf7adac83db489198c2.tar.bz2
scummvm-rg350-88062e90a00112e8c959edf7adac83db489198c2.zip
Plugging some memory leaks
svn-id: r41859
-rw-r--r--engines/gob/game.cpp12
-rw-r--r--engines/gob/inter_v3.cpp4
-rw-r--r--engines/gob/resources.cpp2
-rw-r--r--engines/gob/scenery.cpp2
-rw-r--r--engines/gob/sound/sounddesc.cpp10
5 files changed, 27 insertions, 3 deletions
diff --git a/engines/gob/game.cpp b/engines/gob/game.cpp
index 59e2627bd5..9a5825a475 100644
--- a/engines/gob/game.cpp
+++ b/engines/gob/game.cpp
@@ -95,6 +95,18 @@ Game::Game(GobEngine *vm) : _vm(vm) {
}
Game::~Game() {
+ for (int i = 0; i < 5; i++) {
+ warning("%d", i);
+ if (_scriptArray[i] != _script) {
+ warning("DELETE (%d)", _scriptArray[i] != 0);
+ delete _scriptArray[i];
+ }
+ if (_resourcesArray[i] != _resources) {
+ warning("DELETE (%d)", _resourcesArray[i] != 0);
+ delete _resourcesArray[i];
+ }
+ }
+
delete _script;
delete _resources;
}
diff --git a/engines/gob/inter_v3.cpp b/engines/gob/inter_v3.cpp
index 0750d29947..17ce7feafa 100644
--- a/engines/gob/inter_v3.cpp
+++ b/engines/gob/inter_v3.cpp
@@ -217,8 +217,10 @@ bool Inter_v3::o3_getTotTextItemPart(OpFuncParams &params) {
if (((*totData != 2) && (*totData != 5)) ||
(ABS(offY - READ_LE_UINT16(totData + 3)) > 1)) {
- if (curPart == part)
+ if (curPart == part) {
+ delete textItem;
return false;
+ }
stringVar = stringStartVar;
WRITE_VARO_UINT8(stringVar, 0);
diff --git a/engines/gob/resources.cpp b/engines/gob/resources.cpp
index 9a46ce2673..e803f8894c 100644
--- a/engines/gob/resources.cpp
+++ b/engines/gob/resources.cpp
@@ -678,6 +678,7 @@ byte *Resources::getEXTData(EXTResourceItem &extItem, uint32 size) const {
return 0;
}
+ delete stream;
return data;
}
@@ -698,6 +699,7 @@ byte *Resources::getEXData(EXTResourceItem &extItem, uint32 size) const {
return 0;
}
+ delete stream;
return data;
}
diff --git a/engines/gob/scenery.cpp b/engines/gob/scenery.cpp
index 6d3748261e..7a4b8ad868 100644
--- a/engines/gob/scenery.cpp
+++ b/engines/gob/scenery.cpp
@@ -963,6 +963,8 @@ void Scenery::loadPieces(int16 pictDescId, PieceDesc *&pieceDesc, uint32 &pieces
pieceDesc[i].top = resource->stream()->readSint16LE();
pieceDesc[i].bottom = resource->stream()->readSint16LE();
}
+
+ delete resource;
}
} // End of namespace Gob
diff --git a/engines/gob/sound/sounddesc.cpp b/engines/gob/sound/sounddesc.cpp
index 79f4a48b77..b9b327d105 100644
--- a/engines/gob/sound/sounddesc.cpp
+++ b/engines/gob/sound/sounddesc.cpp
@@ -101,10 +101,16 @@ bool SoundDesc::load(SoundType type, Resource *resource) {
}
void SoundDesc::free() {
- delete _resource;
+ if (_resource) {
+ delete _resource;
+ _data = 0;
+ }
+
+ delete[] _data;
_resource = 0;
- _data = _dataPtr = 0;
+ _data = 0;
+ _dataPtr = 0;
_id = 0;
}