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