X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2Ffile.c;h=8467cbf03877ab770470259a6519c8841571e89c;hb=30eb586d06bc4d1ee7388dced1c20e530292aa93;hp=a38c80667cff3390b9426f37c07fd7d2771f9832;hpb=3ff2e8a0b5c27b99a9920bdf5ed82bc41bf40181;p=rocksndiamonds.git diff --git a/src/game_sp/file.c b/src/game_sp/file.c index a38c8066..8467cbf0 100644 --- a/src/game_sp/file.c +++ b/src/game_sp/file.c @@ -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);