Changeset - r21671:49c4b765db6a
[Not reviewed]
master
0 1 0
rubidium - 10 years ago 2014-09-10 16:33:42
rubidium@openttd.org
(svn r26809) -Fix: do not dereference the -1 index of the file names array of music files. It definitely breaks on m68k, and might cause failures on other platforms as well
1 file changed with 11 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/music_gui.cpp
Show inline comments
 
@@ -202,12 +202,17 @@ static void SelectSongToPlay()
 

	
 
	memset(_cur_playlist, 0, sizeof(_cur_playlist));
 
	do {
 
		const char *filename = BaseMusic::GetUsedSet()->files[_playlists[_settings_client.music.playlist][i] - 1].filename;
 
		/* We are now checking for the existence of that file prior
 
		 * to add it to the list of available songs */
 
		if (!StrEmpty(filename) && FioCheckFileExists(filename, BASESET_DIR)) {
 
			_cur_playlist[j] = _playlists[_settings_client.music.playlist][i];
 
			j++;
 
		/* File is the index into the file table of the music set. The play list uses 0 as 'no entry',
 
		 * so we need to subtract 1. In case of 'no entry' (file = -1), just skip adding it outright. */
 
		int file = _playlists[_settings_client.music.playlist][i] - 1;
 
		if (file >= 0) {
 
			const char *filename = BaseMusic::GetUsedSet()->files[file].filename;
 
			/* We are now checking for the existence of that file prior
 
			* to add it to the list of available songs */
 
			if (!StrEmpty(filename) && FioCheckFileExists(filename, BASESET_DIR)) {
 
				_cur_playlist[j] = _playlists[_settings_client.music.playlist][i];
 
				j++;
 
			}
 
		}
 
	} while (_playlists[_settings_client.music.playlist][++i] != 0 && j < lengthof(_cur_playlist) - 1);
 

	
0 comments (0 inline, 0 general)