diff options
Diffstat (limited to 'sky/disk.cpp')
-rw-r--r-- | sky/disk.cpp | 22 |
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) { |