summaryrefslogtreecommitdiff
path: root/src/doom/p_saveg.c
diff options
context:
space:
mode:
authorSimon Howard2010-05-03 17:07:45 +0000
committerSimon Howard2010-05-03 17:07:45 +0000
commit4767ddccafca1a1c50bc097284df1328d478882a (patch)
tree26846694ab4cb35dbea92bf1519dc3a4c9b33c52 /src/doom/p_saveg.c
parentaf48a6309cf1f03b5136e26a5fc27a38e490d808 (diff)
parentaa35a71bd05536f82ce23887f7e84decc7f850a7 (diff)
downloadchocolate-doom-4767ddccafca1a1c50bc097284df1328d478882a.tar.gz
chocolate-doom-4767ddccafca1a1c50bc097284df1328d478882a.tar.bz2
chocolate-doom-4767ddccafca1a1c50bc097284df1328d478882a.zip
Merge from trunk.
Subversion-branch: /branches/raven-branch Subversion-revision: 1931
Diffstat (limited to 'src/doom/p_saveg.c')
-rw-r--r--src/doom/p_saveg.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/doom/p_saveg.c b/src/doom/p_saveg.c
index e557e494..968120c0 100644
--- a/src/doom/p_saveg.c
+++ b/src/doom/p_saveg.c
@@ -44,6 +44,7 @@
FILE *save_stream;
int savegamelength;
+boolean savegame_error;
// Get the filename of a temporary file to write the savegame to. After
// the file has been successfully saved, it will be renamed to the
@@ -75,7 +76,7 @@ char *P_SaveGameFile(int slot)
filename = malloc(strlen(savegamedir) + 32);
}
- sprintf(basename, DEH_String(SAVEGAMENAME "%d.dsg"), slot);
+ DEH_snprintf(basename, 32, SAVEGAMENAME "%d.dsg", slot);
sprintf(filename, "%s%s", savegamedir, basename);
@@ -88,14 +89,31 @@ static byte saveg_read8(void)
{
byte result;
- fread(&result, 1, 1, save_stream);
+ if (fread(&result, 1, 1, save_stream) < 1)
+ {
+ if (!savegame_error)
+ {
+ fprintf(stderr, "saveg_read8: Unexpected end of file while "
+ "reading save game\n");
+
+ savegame_error = true;
+ }
+ }
return result;
}
static void saveg_write8(byte value)
{
- fwrite(&value, 1, 1, save_stream);
+ if (fwrite(&value, 1, 1, save_stream) < 1)
+ {
+ if (!savegame_error)
+ {
+ fprintf(stderr, "saveg_write8: Error while writing save game\n");
+
+ savegame_error = true;
+ }
+ }
}
static short saveg_read16(void)