/* 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 --------";
setTapeInfoToDefaults_SP();
}
-void copyInternalEngineVars_SP()
+void copyInternalEngineVars_SP(void)
{
int count;
int i, x, y;
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);
}
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);