From 71f0d72b145b4d56e1282c8fa9c5030521f49d82 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Mon, 13 Sep 2021 00:56:26 +0200 Subject: [PATCH] added saving incorrect solution tape to temporary file before uploading --- src/tape.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/tape.c b/src/tape.c index e7a87852..a22fc9a5 100644 --- a/src/tape.c +++ b/src/tape.c @@ -1529,6 +1529,7 @@ static int AutoPlayTapesExt(boolean initialize) // save score tape to upload to server; may be required for some reasons: // * level set identifier in solution tapes may differ from level set + // * level set identifier is missing (old-style tape without INFO chunk) // * solution tape may have native format (like Supaplex solution files) SaveScoreTape(level_nr); @@ -1789,9 +1790,21 @@ static int AutoPlayTapesExt(boolean initialize) autoplay.tape_filename = (options.mytapes ? getTapeFilename(level_nr) : getDefaultSolutionTapeFilename(level_nr)); - if (!fileExists(autoplay.tape_filename)) + boolean correct_info_chunk = + (strEqual(leveldir_current->identifier, tape.level_identifier) && + level_nr == tape.level_nr); + + if (!correct_info_chunk) + { + strncpy(tape.level_identifier, leveldir_current->identifier, + MAX_FILENAME_LEN); + tape.level_identifier[MAX_FILENAME_LEN] = '\0'; + tape.level_nr = level_nr; + } + + if (!fileExists(autoplay.tape_filename) || !correct_info_chunk) { - // non-standard solution tape -- save to temporary file + // non-standard or incorrect solution tape -- save to temporary file autoplay.tape_filename = getTemporaryTapeFilename(); SaveTapeToFilename(autoplay.tape_filename); -- 2.34.1