aboutsummaryrefslogtreecommitdiff
path: root/engines/toon/resource.cpp
diff options
context:
space:
mode:
authorSylvain Dupont2010-11-12 22:31:04 +0000
committerSylvain Dupont2010-11-12 22:31:04 +0000
commit8a4cc14b1ae2b81055b710699854e25b02db9be9 (patch)
tree363e1feb3958be82e88fc75fda819877384fe782 /engines/toon/resource.cpp
parentfd82c3783d1e563e9c3526aeb0d75e79ebcc0d76 (diff)
downloadscummvm-rg350-8a4cc14b1ae2b81055b710699854e25b02db9be9.tar.gz
scummvm-rg350-8a4cc14b1ae2b81055b710699854e25b02db9be9.tar.bz2
scummvm-rg350-8a4cc14b1ae2b81055b710699854e25b02db9be9.zip
TOON: Fix audio crashs and more memory leaks
svn-id: r54219
Diffstat (limited to 'engines/toon/resource.cpp')
-rw-r--r--engines/toon/resource.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/engines/toon/resource.cpp b/engines/toon/resource.cpp
index f76db47539..3f879df781 100644
--- a/engines/toon/resource.cpp
+++ b/engines/toon/resource.cpp
@@ -39,6 +39,8 @@ Resources::~Resources() {
_pakFiles.pop_back();
delete temp;
}
+
+ purgeFileData();
}
void Resources::openPackage(Common::String fileName, bool preloadEntirePackage) {
@@ -84,6 +86,7 @@ uint8 *Resources::getFileData(Common::String fileName, uint32 *fileSize) {
uint8 *memory = (uint8 *)new uint8[*fileSize];
file.read(memory, *fileSize);
file.close();
+ _allocatedFileData.push_back(memory);
return memory;
} else {
for (uint32 i = 0; i < _pakFiles.size(); i++) {
@@ -124,6 +127,13 @@ Common::SeekableReadStream *Resources::openFile(Common::String fileName) {
return 0;
}
}
+
+void Resources::purgeFileData() {
+ for (uint32 i = 0; i < _allocatedFileData.size(); i++) {
+ delete[] _allocatedFileData[i];
+ }
+ _allocatedFileData.clear();
+}
Common::SeekableReadStream *PakFile::createReadStream(Common::String fileName) {
debugC(1, kDebugResource, "createReadStream(%s)", fileName.c_str());