aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/ds/arm9/source/gbampsave.cpp
diff options
context:
space:
mode:
authorNeil Millstone2006-08-19 11:11:18 +0000
committerNeil Millstone2006-08-19 11:11:18 +0000
commit5ce67a67e198f566ced39a1cdbf11b41dc850a3b (patch)
tree0774eb0209431f95889e5c59fbf6a659a13c6d03 /backends/platform/ds/arm9/source/gbampsave.cpp
parent5516fa3b80cd0d1b14ed933a5320f09d9a80e412 (diff)
downloadscummvm-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.cpp19
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];