aboutsummaryrefslogtreecommitdiff
path: root/engines/toon/resource.cpp
diff options
context:
space:
mode:
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());