aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mortevielle')
-rw-r--r--engines/mortevielle/disk.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp
index 8a889f2130..41868d42fa 100644
--- a/engines/mortevielle/disk.cpp
+++ b/engines/mortevielle/disk.cpp
@@ -87,19 +87,28 @@ void takesav(int n) {
dem1();
// -- Load the file 'sauve#n.mor'
Common::String saveName = Common::String::format("sav%d.mor", n);
- Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(saveName);
- Common::Serializer sz(f, NULL);
- sync_save(sz);
+ // Try loading first from the save area
+ Common::SeekableReadStream *stream = g_system->getSavefileManager()->openForLoading(saveName);
+
+ // If not present, try loading from the program folder
+ Common::File f;
+ if (stream == NULL) {
+ if (!f.open(saveName))
+ error("Unable to open save file '%s'", saveName);
- if (f->err()) {
- i = do_alert(err_mess, 1);
- mortevielle_exit(0);
+ stream = f.readStream(f.size());
+ f.close();
}
+
+ Common::Serializer sz(stream, NULL);
+ sync_save(sz);
+
s = s1;
for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i];
- delete f;
+ // Close the stream
+ delete stream;
}
void ld_game(int n) {