aboutsummaryrefslogtreecommitdiff
path: root/sky/disk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sky/disk.cpp')
-rw-r--r--sky/disk.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/sky/disk.cpp b/sky/disk.cpp
index a74160b0a5..76140c5d35 100644
--- a/sky/disk.cpp
+++ b/sky/disk.cpp
@@ -64,11 +64,11 @@ SkyDisk::SkyDisk(char *gameDataPath) {
SkyDisk::~SkyDisk(void) {
- PrefFile **fEntry = &_prefRoot;
- while (*fEntry) {
- free((*fEntry)->data);
- PrefFile *fTemp = *fEntry;
- fEntry = &((*fEntry)->next);
+ PrefFile *fEntry = _prefRoot;
+ while (fEntry) {
+ free(fEntry->data);
+ PrefFile *fTemp = fEntry;
+ fEntry = fEntry->next;
delete fTemp;
}
if (_dnrHandle->isOpen()) _dnrHandle->close();
@@ -77,6 +77,18 @@ SkyDisk::~SkyDisk(void) {
delete _dataDiskHandle;
}
+void SkyDisk::flushPrefetched(void) {
+
+ PrefFile *fEntry = _prefRoot;
+ while (fEntry) {
+ free(fEntry->data);
+ PrefFile *fTemp = fEntry;
+ fEntry = fEntry->next;
+ delete fTemp;
+ }
+ _prefRoot = NULL;
+}
+
//load in file file_nr to address dest
//if dest == NULL, then allocate memory for this file
uint8 *SkyDisk::loadFile(uint16 fileNr, uint8 *dest) {