diff options
-rw-r--r-- | sky/control.cpp | 49 |
1 files changed, 21 insertions, 28 deletions
diff --git a/sky/control.cpp b/sky/control.cpp index 0dd5e0550c..45ee5167dc 100644 --- a/sky/control.cpp +++ b/sky/control.cpp @@ -959,11 +959,11 @@ void SkyControl::loadDescriptions(uint8 *destBuf) { memset(destBuf, 0, MAX_SAVE_GAMES * MAX_TEXT_LEN); - File *inf = new File(); - inf->open("SKY-VM.SAV",_savePath); - if (inf->isOpen()) { - uint8 *tmpBuf = (uint8 *)malloc(inf->size()); - inf->read(tmpBuf, inf->size()); + File inf; + inf.open("SKY-VM.SAV",_savePath); + if (inf.isOpen()) { + uint8 *tmpBuf = (uint8 *)malloc(inf.size()); + inf.read(tmpBuf, inf.size()); uint8 *destPos = destBuf; uint8 *inPos = tmpBuf; for (uint16 cnt = 0; cnt < MAX_SAVE_GAMES; cnt++) { @@ -975,7 +975,7 @@ void SkyControl::loadDescriptions(uint8 *destBuf) { inPos += nameCnt + 1; } free(tmpBuf); - inf->close(); + inf.close(); } else { uint8 *destPos = destBuf; for (uint16 cnt = 0; cnt < MAX_SAVE_GAMES; cnt++) { @@ -1003,10 +1003,10 @@ void SkyControl::saveDescriptions(uint8 *srcBuf) { tmpPos++; srcPos += MAX_TEXT_LEN; } - File *outf = new File(); - outf->open("SKY-VM.SAV", _savePath, File::kFileWriteMode); - outf->write(tmpBuf, tmpPos - tmpBuf); - outf->close(); + File outf; + outf.open("SKY-VM.SAV", _savePath, File::kFileWriteMode); + outf.write(tmpBuf, tmpPos - tmpBuf); + outf.close(); free(tmpBuf); } @@ -1014,22 +1014,19 @@ uint16 SkyControl::saveGameToFile(void) { char fName[20]; sprintf(fName,"SKY-VM.%03d", _selectedGame); - File *outf = new File(); - if (!outf->open(fName, _savePath, File::kFileWriteMode)) { - delete outf; + File outf; + if (!outf.open(fName, _savePath, File::kFileWriteMode)) { return NO_DISK_SPACE; } uint8 *saveData = (uint8 *)malloc(0x50000); uint32 fSize = prepareSaveData(saveData); - if (outf->write(saveData, fSize) != fSize) { + if (outf.write(saveData, fSize) != fSize) { free(saveData); - delete outf; return NO_DISK_SPACE; } - outf->close(); - delete outf; + outf.close(); free(saveData); return GAME_SAVED; } @@ -1398,34 +1395,30 @@ uint16 SkyControl::restoreGameFromFile(void) { char fName[20]; sprintf(fName,"SKY-VM.%03d", _selectedGame); - File *inf = new File(); - if (!inf->open(fName, _savePath)) { - delete inf; + File inf; + if (!inf.open(fName, _savePath)) { return RESTORE_FAILED; } - uint32 fSize = inf->size(); + uint32 fSize = inf.size(); uint8 *saveData = (uint8 *)malloc(fSize); - uint32 infSize = inf->readUint32LE(); - inf->seek(0, SEEK_SET); + uint32 infSize = inf.readUint32LE(); + inf.seek(0, SEEK_SET); if (fSize != infSize) { warning("File size doesn't match expected data size!"); - delete inf; free(saveData); return RESTORE_FAILED; } - if (inf->read(saveData, fSize) != fSize) { + if (inf.read(saveData, fSize) != fSize) { warning("Can't read from file!"); - delete inf; free(saveData); return RESTORE_FAILED; } uint16 res = parseSaveData(saveData); SkyState::_systemVars.pastIntro = true; - inf->close(); - delete inf; + inf.close(); free(saveData); return res; } |