From: Holger Schemel Date: Thu, 22 Feb 2018 23:57:43 +0000 (+0100) Subject: fixed bug with (float) division by zero when auto-testing very short tapes X-Git-Tag: 4.0.1.2~1 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=ed2846d97bd8b22246cb522d0de1ac73a040b414;p=rocksndiamonds.git fixed bug with (float) division by zero when auto-testing very short tapes --- diff --git a/src/tape.c b/src/tape.c index e4254036..2c0661a0 100644 --- a/src/tape.c +++ b/src/tape.c @@ -37,6 +37,7 @@ /* forward declaration for internal use */ static void HandleTapeButtons(struct GadgetInfo *); static void TapeStopWarpForward(); +static float GetTapeLengthSecondsFloat(); static struct GadgetInfo *tape_gadget[NUM_TAPE_BUTTONS]; @@ -484,11 +485,13 @@ void PrintTapeReplayProgress(boolean replay_finished) } else { + float tape_length_seconds = GetTapeLengthSecondsFloat(); + PrintNoLog("\r"); Print("Level %03d [%02d:%02d]: (%02d:%02d.%03d / %.2f %%) - %s.\n", level_nr, tape.length_seconds / 60, tape.length_seconds % 60, counter_seconds / 60, counter_seconds % 60, counter % 1000, - (float)counter / tape.length_seconds / 10, + (float)counter / tape_length_seconds / 10, tape.auto_play_level_solved ? "solved" : "NOT SOLVED"); counter_last = -1; @@ -943,6 +946,11 @@ unsigned int GetTapeLengthSeconds() return (GetTapeLengthFrames() * GAME_FRAME_DELAY / 1000); } +static float GetTapeLengthSecondsFloat() +{ + return ((float)GetTapeLengthFrames() * GAME_FRAME_DELAY / 1000); +} + static void TapeStartWarpForward(int mode) { tape.fast_forward = (mode & AUTOPLAY_FFWD);