aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorD G Turner2011-03-24 20:59:20 +0000
committerD G Turner2011-03-24 20:59:20 +0000
commitbcb9179a8b4128469700af62463674febf2785c6 (patch)
tree953cba9c26def21fa4ffb9fb16953779c4b1bdad /engines/sci/engine
parente6080087c8453b5a0345bf62b2cd3809e46f7591 (diff)
downloadscummvm-rg350-bcb9179a8b4128469700af62463674febf2785c6.tar.gz
scummvm-rg350-bcb9179a8b4128469700af62463674febf2785c6.tar.bz2
scummvm-rg350-bcb9179a8b4128469700af62463674febf2785c6.zip
SCI: Close Memory Leak from kAnimate Calls.
This was due to a missing destructor in the HunkTable. Thanks to wjp for this patch.
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/segment.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/engines/sci/engine/segment.h b/engines/sci/engine/segment.h
index ffde01f934..947953e8c3 100644
--- a/engines/sci/engine/segment.h
+++ b/engines/sci/engine/segment.h
@@ -318,6 +318,12 @@ struct ListTable : public SegmentObjTable<List> {
/* HunkTable */
struct HunkTable : public SegmentObjTable<Hunk> {
HunkTable() : SegmentObjTable<Hunk>(SEG_TYPE_HUNK) {}
+ virtual ~HunkTable() {
+ for (uint i = 0; i < _table.size(); i++) {
+ if (isValidEntry(i))
+ freeEntryContents(i);
+ }
+ }
void freeEntryContents(int idx) {
free(_table[idx].mem);