From 2fa40d893341674ee79d7a401f35804e2f900743 Mon Sep 17 00:00:00 2001 From: Steve Date: Sun, 1 Dec 2019 11:56:49 +0000 Subject: [PATCH] Delete temporary files before attempting to rename (Windows and some Unix fixes). --- common.mk | 2 +- src/hub/postMission.c | 14 ++++++++++++-- src/system/io.c | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/common.mk b/common.mk index 4552504..4c84e91 100644 --- a/common.mk +++ b/common.mk @@ -1,5 +1,5 @@ VERSION = 1.2 -REVISION = 0 +REVISION = 1 LOCALE_MO = $(patsubst %.po,%.mo,$(wildcard locale/*.po)) OUT = bin diff --git a/src/hub/postMission.c b/src/hub/postMission.c index bcf3590..6b08ad4 100644 --- a/src/hub/postMission.c +++ b/src/hub/postMission.c @@ -100,7 +100,12 @@ static void saveGameAndWorld(void) src = buildFormattedString("%s/%d/%s.json.tmp", app.saveDir, game.saveSlot, world.id); dest = buildFormattedString("%s/%d/%s.json", app.saveDir, game.saveSlot, world.id); - renameFile(src, dest); + + if (!renameFile(src, dest)) + { + SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_ERROR, "Failed to save file '%s'", dest); + exit(1); + } free(src); free(dest); @@ -108,7 +113,12 @@ static void saveGameAndWorld(void) src = buildFormattedString("%s/%d/game.json.tmp", app.saveDir, game.saveSlot); dest = buildFormattedString("%s/%d/game.json", app.saveDir, game.saveSlot, world.id); - renameFile(src, dest); + + if (!renameFile(src, dest)) + { + SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_ERROR, "Failed to save file '%s'", dest); + exit(1); + } free(src); free(dest); diff --git a/src/system/io.c b/src/system/io.c index 556f043..3753d91 100644 --- a/src/system/io.c +++ b/src/system/io.c @@ -202,7 +202,7 @@ int deleteFile(char *path) int renameFile(char *src, char *dest) { - return rename(src, dest) == 0; + return deleteFile(dest) && rename(src, dest) == 0; } static int stringComparator(const void *a, const void *b)