diff options
author | Sven Hesse | 2009-06-25 10:54:35 +0000 |
---|---|---|
committer | Sven Hesse | 2009-06-25 10:54:35 +0000 |
commit | 88062e90a00112e8c959edf7adac83db489198c2 (patch) | |
tree | 4e4a898053960bba951fa057dfca6abe78e1ff7b /engines/gob | |
parent | 33a836fc5661d1c3b7fcf73248a32aca63e4e9a5 (diff) | |
download | scummvm-rg350-88062e90a00112e8c959edf7adac83db489198c2.tar.gz scummvm-rg350-88062e90a00112e8c959edf7adac83db489198c2.tar.bz2 scummvm-rg350-88062e90a00112e8c959edf7adac83db489198c2.zip |
Plugging some memory leaks
svn-id: r41859
Diffstat (limited to 'engines/gob')
-rw-r--r-- | engines/gob/game.cpp | 12 | ||||
-rw-r--r-- | engines/gob/inter_v3.cpp | 4 | ||||
-rw-r--r-- | engines/gob/resources.cpp | 2 | ||||
-rw-r--r-- | engines/gob/scenery.cpp | 2 | ||||
-rw-r--r-- | engines/gob/sound/sounddesc.cpp | 10 |
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 ¶ms) { 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; } |