X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsound.c;h=8fb94919cff281bdc887a241aecf1225ab9f076c;hb=fd2761fde6102017cd3be6b59c3be9140f96f703;hp=8b01135fea198c280f2a42e600ce668bbdf12b20;hpb=3607ef8e4000754063935d908053d564de92c0a2;p=rocksndiamonds.git diff --git a/src/libgame/sound.c b/src/libgame/sound.c index 8b01135f..8fb94919 100644 --- a/src/libgame/sound.c +++ b/src/libgame/sound.c @@ -870,7 +870,7 @@ static void Mixer_InsertSound(SoundControl snd_ctrl) } else { - if (snd_ctrl.nr >= num_sounds) + if (snd_ctrl.nr < 0 || snd_ctrl.nr >= num_sounds) return; snd_info = getSoundInfoEntryFromSoundID(snd_ctrl.nr); @@ -1866,6 +1866,20 @@ static void *Load_MOD(char *filename) #endif } +static void *Load_WAV_or_MOD(char *filename) +{ + char *basename = strrchr(filename, '/'); + + basename = (basename != NULL ? basename + 1 : filename); + + if (FileIsSound(basename)) + return Load_WAV(filename); + else if (FileIsMusic(basename)) + return Load_MOD(filename); + else + return NULL; +} + void LoadCustomMusic_NoConf(void) { static boolean draw_init_text = TRUE; /* only draw at startup */ @@ -1910,10 +1924,6 @@ void LoadCustomMusic_NoConf(void) { struct FileInfo *music = getMusicListEntry(i); -#if 0 - printf("::: -> '%s'\n", music->filename); -#endif - if (strcmp(basename, music->filename) == 0) { music_already_used = TRUE; @@ -1926,8 +1936,7 @@ void LoadCustomMusic_NoConf(void) #if 0 if (FileIsSound(basename) || FileIsMusic(basename)) - printf("DEBUG: loading music '%s' ... [%d]\n", - basename, music_already_used); + printf("DEBUG: loading music '%s' ...\n", basename); #endif if (draw_init_text) @@ -2183,7 +2192,7 @@ void InitMusicList(struct ConfigInfo *config_list, int num_file_list_entries, /* ---------- initialize artwork loading/freeing functions ---------- */ - music_info->load_artwork = Load_MOD; + music_info->load_artwork = Load_WAV_or_MOD; music_info->free_artwork = FreeMusic; }