mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
SaveState: Attempt to recover from missing files.
If there were files open before that don't exist, things could go badly. But we could at least load the state file and hope the game doesn't break. That's better that refusing to load at all.
This commit is contained in:
1 parent
35060cf4a0
commit
269f01f841
1 file changed
+8
-3
@@ -906,20 +906,25 @@ void DirectoryFileSystem::DoState(PointerWrap &p) {
|
||||
Do(p, entry.guestFilename);
|
||||
Do(p, entry.access);
|
||||
u32 err;
|
||||
bool brokenFile = false;
|
||||
if (!entry.hFile.Open(basePath,entry.guestFilename,entry.access, err)) {
|
||||
ERROR_LOG(FILESYS, "Failed to reopen file while loading state: %s", entry.guestFilename.c_str());
|
||||
continue;
|
||||
brokenFile = true;
|
||||
}
|
||||
u32 position;
|
||||
Do(p, position);
|
||||
if (position != entry.hFile.Seek(position, FILEMOVE_BEGIN)) {
|
||||
ERROR_LOG(FILESYS, "Failed to restore seek position while loading state: %s", entry.guestFilename.c_str());
|
||||
continue;
|
||||
brokenFile = true;
|
||||
}
|
||||
if (s >= 2) {
|
||||
Do(p, entry.hFile.needsTrunc_);
|
||||
}
|
||||
entries[key] = entry;
|
||||
// Let's hope that things don't go that badly with the file mysteriously auto-closed.
|
||||
// Better than not loading the save state at all, hopefully.
|
||||
if (!brokenFile) {
|
||||
entries[key] = entry;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (auto iter = entries.begin(); iter != entries.end(); ++iter) {
|
||||
|
||||
Reference in new issue
Block a user