diff options
author | Neil Millstone | 2006-08-19 11:11:18 +0000 |
---|---|---|
committer | Neil Millstone | 2006-08-19 11:11:18 +0000 |
commit | 5ce67a67e198f566ced39a1cdbf11b41dc850a3b (patch) | |
tree | 0774eb0209431f95889e5c59fbf6a659a13c6d03 /backends/platform/ds/arm9/source/gbampsave.cpp | |
parent | 5516fa3b80cd0d1b14ed933a5320f09d9a80e412 (diff) | |
download | scummvm-rg350-5ce67a67e198f566ced39a1cdbf11b41dc850a3b.tar.gz scummvm-rg350-5ce67a67e198f566ced39a1cdbf11b41dc850a3b.tar.bz2 scummvm-rg350-5ce67a67e198f566ced39a1cdbf11b41dc850a3b.zip |
Fixed bug causing crash during saving in Saga engine, changed audio to low quality.
svn-id: r23726
Diffstat (limited to 'backends/platform/ds/arm9/source/gbampsave.cpp')
-rw-r--r-- | backends/platform/ds/arm9/source/gbampsave.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/backends/platform/ds/arm9/source/gbampsave.cpp b/backends/platform/ds/arm9/source/gbampsave.cpp index 714ab7e2bb..d2dfc910f4 100644 --- a/backends/platform/ds/arm9/source/gbampsave.cpp +++ b/backends/platform/ds/arm9/source/gbampsave.cpp @@ -27,7 +27,7 @@ GBAMPSaveFile::GBAMPSaveFile(char* name, bool saveOrLoad) { handle = DS::std_fopen(name, saveOrLoad? "w": "r"); - //consolePrintf("%s handle is %d\n", name, handle); +// consolePrintf("%s handle is %d\n", name, handle); // consolePrintf("Created %s\n", name); bufferPos = 0; saveSize = 0; @@ -36,7 +36,7 @@ GBAMPSaveFile::GBAMPSaveFile(char* name, bool saveOrLoad) { GBAMPSaveFile::~GBAMPSaveFile() { flushSaveBuffer(); - DS::std_fclose(handle); + if (handle) DS::std_fclose(handle); } uint32 GBAMPSaveFile::read(void *buf, uint32 size) { @@ -143,11 +143,22 @@ Common::SaveFile* GBAMPSaveFileManager::openSavefile(char const* name, bool save } // consolePrintf(fileSpec); - - return new GBAMPSaveFile(fileSpec, saveOrLoad); + GBAMPSaveFile* sf = new GBAMPSaveFile(fileSpec, saveOrLoad); + if (sf->isOpen()) { + return sf; + } else { + delete sf; + return NULL; + } } void GBAMPSaveFileManager::listSavefiles(char const* prefix, bool* marks, int num) { + memset(marks, true, num * sizeof(bool)); + return; + + // Seems like I misunderstood what this function was supposed to do. + // I thought I was meant to set the marks[] array according to which + // saves are present on disk. enum { TYPE_NO_MORE = 0, TYPE_FILE = 1, TYPE_DIR = 2 }; char name[128]; char path[128]; |