aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/agos.cpp
diff options
context:
space:
mode:
authorTravis Howell2007-07-25 11:29:47 +0000
committerTravis Howell2007-07-25 11:29:47 +0000
commitcf3719d613a0947ce46b5541e378532b4cbcf394 (patch)
tree1424cd8a7e1b8111c928a1366b6ec679da60acab /engines/agos/agos.cpp
parent5c588e1f5e4b80fb345f14a3a2cafcf8c6fdc352 (diff)
downloadscummvm-rg350-cf3719d613a0947ce46b5541e378532b4cbcf394.tar.gz
scummvm-rg350-cf3719d613a0947ce46b5541e378532b4cbcf394.tar.bz2
scummvm-rg350-cf3719d613a0947ce46b5541e378532b4cbcf394.zip
Add eriktorbjorn's patch for bug #1498158 - AOGS: Itemheap overflow on 64bit systems.
svn-id: r28189
Diffstat (limited to 'engines/agos/agos.cpp')
-rw-r--r--engines/agos/agos.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp
index ae7f692c3f..ba429b510c 100644
--- a/engines/agos/agos.cpp
+++ b/engines/agos/agos.cpp
@@ -148,10 +148,6 @@ AGOSEngine::AGOSEngine(OSystem *syst)
_itemArraySize = 0;
_itemArrayInited = 0;
- _itemHeapPtr = 0;
- _itemHeapCurPos = 0;
- _itemHeapSize = 0;
-
_iconFilePtr = 0;
_codePtr = 0;
@@ -920,7 +916,11 @@ AGOSEngine::~AGOSEngine() {
_midi.close();
- free(_itemHeapPtr - _itemHeapCurPos);
+ for (uint i = 0; i < _itemHeap.size(); i++) {
+ delete [] _itemHeap[i];
+ }
+ _itemHeap.clear();
+
free(_tablesHeapPtr - _tablesHeapCurPos);
free(_gameOffsetsPtr);
@@ -1054,7 +1054,11 @@ void AGOSEngine::shutdown() {
_midi.close();
- free(_itemHeapPtr - _itemHeapCurPos);
+ for (uint i = 0; i < _itemHeap.size(); i++) {
+ delete [] _itemHeap[i];
+ }
+ _itemHeap.clear();
+
free(_tablesHeapPtr - _tablesHeapCurPos);
free(_gameOffsetsPtr);