fixed compiler warnings (after adding "-Wmissing-prototypes")
[rocksndiamonds.git] / src / game_sp / file.c
index a38c80667cff3390b9426f37c07fd7d2771f9832..8467cbf03877ab770470259a6519c8841571e89c 100644 (file)
@@ -7,13 +7,13 @@
 /* functions for loading Supaplex level                                      */
 /* ------------------------------------------------------------------------- */
 
-void setTapeInfoToDefaults_SP()
+static void setTapeInfoToDefaults_SP(void)
 {
   native_sp_level.demo.is_available = FALSE;
   native_sp_level.demo.length = 0;
 }
 
-void setLevelInfoToDefaults_SP()
+void setLevelInfoToDefaults_SP(void)
 {
   LevelInfoType *header = &native_sp_level.header;
   char *empty_title = "-------- EMPTY --------";
@@ -58,7 +58,7 @@ void setLevelInfoToDefaults_SP()
   setTapeInfoToDefaults_SP();
 }
 
-void copyInternalEngineVars_SP()
+void copyInternalEngineVars_SP(void)
 {
   int count;
   int i, x, y;
@@ -254,13 +254,13 @@ static void LoadNativeLevelFromFileStream_SP(File *file, int width, int height,
       native_sp_level.demo.data[i] = getFile8Bit(file);
 
       if (native_sp_level.demo.data[i] == 0xff)        /* "end of demo" byte */
-      {
-       i++;
-
        break;
-      }
     }
 
+    if (i >= SP_MAX_TAPE_LEN)
+      Error(ERR_WARN, "SP demo truncated: size exceeds maximum SP demo size %d",
+           SP_MAX_TAPE_LEN);
+
     native_sp_level.demo.length = i;
     native_sp_level.demo.is_available = (native_sp_level.demo.length > 0);
   }
@@ -574,6 +574,8 @@ void SaveNativeLevel_SP(char *filename)
 
     for (i = 0; i < native_sp_level.demo.length; i++)
       putFile8Bit(file, native_sp_level.demo.data[i]);
+
+    putFile8Bit(file, 0xff);   /* "end of demo" byte */
   }
 
   fclose(file);