diff options
| -rw-r--r-- | engines/agi/agi.h | 2 | ||||
| -rw-r--r-- | engines/agi/cycle.cpp | 4 | ||||
| -rw-r--r-- | engines/agi/saveload.cpp | 18 | 
3 files changed, 15 insertions, 9 deletions
| diff --git a/engines/agi/agi.h b/engines/agi/agi.h index 080373d27b..447e55eaa5 100644 --- a/engines/agi/agi.h +++ b/engines/agi/agi.h @@ -881,7 +881,7 @@ public:  	StringData _stringdata; -	const char *getSavegameFilename(int num); +	void getSavegameFilename(int num, char *fileName);  	void getSavegameDescription(int num, char *buf, bool showEmpty = true);  	int selectSlot();  	int saveGame(const char *fileName, const char *saveName); diff --git a/engines/agi/cycle.cpp b/engines/agi/cycle.cpp index e6f122f9f6..f77ef79f29 100644 --- a/engines/agi/cycle.cpp +++ b/engines/agi/cycle.cpp @@ -361,7 +361,9 @@ int AgiEngine::playGame() {  		}  		if (shouldPerformAutoSave(_lastSaveTime)) { -			saveGame(getSavegameFilename(0), "Autosave"); +			char fileName[MAXPATHLEN]; +			getSavegameFilename(0, fileName); +			saveGame(fileName, "Autosave");  		}  	} while (!(shouldQuit() || _restartGame)); diff --git a/engines/agi/saveload.cpp b/engines/agi/saveload.cpp index e62b9d4d69..648cb6f835 100644 --- a/engines/agi/saveload.cpp +++ b/engines/agi/saveload.cpp @@ -546,10 +546,10 @@ int AgiEngine::loadGame(const char *fileName, bool checkId) {  #define NUM_SLOTS 100  #define NUM_VISIBLE_SLOTS 12 -const char *AgiEngine::getSavegameFilename(int num) { +void AgiEngine::getSavegameFilename(int num, char *fileName) {  	Common::String saveLoadSlot = _targetName;  	saveLoadSlot += Common::String::format(".%.3d", num); -	return saveLoadSlot.c_str(); +	strcpy(fileName, saveLoadSlot.c_str());  }  void AgiEngine::getSavegameDescription(int num, char *buf, bool showEmpty) { @@ -557,7 +557,8 @@ void AgiEngine::getSavegameDescription(int num, char *buf, bool showEmpty) {  	Common::InSaveFile *in;  	debugC(4, kDebugLevelMain | kDebugLevelSavegame, "Current game id is %s", _targetName.c_str()); -	strcpy(fileName, getSavegameFilename(num)); +	getSavegameFilename(num, fileName); +  	if (!(in = _saveFileMan->openForLoading(fileName))) {  		debugC(4, kDebugLevelMain | kDebugLevelSavegame, "File %s does not exist", fileName); @@ -852,7 +853,7 @@ int AgiEngine::saveGameDialog() {  		return errOK;  	} -	strcpy(fileName, getSavegameFilename(_firstSlot + slot)); +	getSavegameFilename(_firstSlot + slot, fileName);  	debugC(8, kDebugLevelMain | kDebugLevelResources, "file is [%s]", fileName);  	// Make sure all graphics was blitted to screen. This fixes bug @@ -870,7 +871,10 @@ int AgiEngine::saveGameDialog() {  }  int AgiEngine::saveGameSimple() { -	int result = saveGame(getSavegameFilename(0), "Default savegame"); +	char fileName[MAXPATHLEN]; +	getSavegameFilename(0, fileName); + +	int result = saveGame(fileName, "Default savegame");  	if (result != errOK)  		messageBox("Error saving game.");  	return result; @@ -904,7 +908,7 @@ int AgiEngine::loadGameDialog() {  		return errOK;  	} -	sprintf(fileName, "%s", getSavegameFilename(_firstSlot + slot)); +	getSavegameFilename(_firstSlot + slot, fileName);  	if ((rc = loadGame(fileName)) == errOK) {  		messageBox("Game restored."); @@ -921,7 +925,7 @@ int AgiEngine::loadGameSimple() {  	char fileName[MAXPATHLEN];  	int rc = 0; -	sprintf(fileName, "%s", getSavegameFilename(0)); +	getSavegameFilename(0, fileName);  	_sprites->eraseBoth();  	_sound->stopSound(); | 
