added range check for checking sound and music loops
authorHolger Schemel <info@artsoft.org>
Wed, 29 Dec 2021 14:57:38 +0000 (15:57 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 22 Jan 2022 16:58:30 +0000 (17:58 +0100)
This fixes a bug when playing music on the music info screen that is
not configured in "musicinfo.conf", therefore getting a negative ID,
which caused an illegal array access when checking for music loop.

(The added range check takes into account that the default loop mode
for sounds is "false", but is "true" for music, if not specified.)

src/main.h

index 5ff5558a5696dde185ebf84fe9ee526c0093b87b..3a3dc8af4f85483bde79a439986a41589006753c 100644 (file)
 #define IS_NEW_FRAME(f, g)     (IS_ANIMATED(g) && IS_NEW_DELAY(f, g))
 #define IS_NEXT_FRAME(f, g)    (IS_NEW_FRAME(f, g) && (f) > 0)
 
-#define IS_LOOP_SOUND(s)       (sound_info[s].loop)
-#define IS_LOOP_MUSIC(s)       (music_info[s].loop)
+#define IS_LOOP_SOUND(s)       ((s) >= 0 && sound_info[s].loop)
+#define IS_LOOP_MUSIC(s)       ((s) <  0 || music_info[s].loop)
 
 #define IS_SPECIAL_GFX_ARG(a)  ((a) >= 0 && (a) < NUM_SPECIAL_GFX_ARGS)