aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/base/saveload.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/wintermute/base/saveload.cpp')
-rw-r--r--engines/wintermute/base/saveload.cpp28
1 files changed, 12 insertions, 16 deletions
diff --git a/engines/wintermute/base/saveload.cpp b/engines/wintermute/base/saveload.cpp
index 6299cf6e01..e0f97f0d88 100644
--- a/engines/wintermute/base/saveload.cpp
+++ b/engines/wintermute/base/saveload.cpp
@@ -159,31 +159,27 @@ void SaveLoad::afterLoadScript(void *script, void *data) {
}
Common::String SaveLoad::getSaveSlotFilename(int slot) {
+ Common::String filename;
BasePersistenceManager *pm = new BasePersistenceManager();
- Common::String filename = pm->getFilenameForSlot(slot);
- delete pm;
+ if (pm) {
+ filename = pm->getFilenameForSlot(slot);
+ delete pm;
+ }
debugC(kWintermuteDebugSaveGame, "getSaveSlotFileName(%d) = %s", slot, filename.c_str());
return filename;
}
-bool SaveLoad::getSaveSlotDescription(int slot, char *buffer) {
- buffer[0] = '\0';
-
+Common::String SaveLoad::getSaveSlotDescription(int slot) {
+ Common::String description;
Common::String filename = getSaveSlotFilename(slot);
BasePersistenceManager *pm = new BasePersistenceManager();
- if (!pm) {
- return false;
- }
-
- if (!(pm->initLoad(filename))) {
+ if (pm) {
+ if ((pm->initLoad(filename))) {
+ description = pm->_savedDescription;
+ }
delete pm;
- return false;
}
-
- strcpy(buffer, pm->_savedDescription);
- delete pm;
-
- return true;
+ return description;
}
bool SaveLoad::isSaveSlotUsed(int slot) {