mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-11 00:34:27 +00:00
(svn r23034) -Fix: make sure the custom playlists are 0 terminated
This commit is contained in:
parent
f04746a9ff
commit
0656660f22
@ -79,20 +79,24 @@ static byte * const _playlists[] = {
|
||||
|
||||
/**
|
||||
* Validate a playlist.
|
||||
* @param playlist the playlist to validate
|
||||
* @param playlist The playlist to validate.
|
||||
* @param last The last location in the list.
|
||||
*/
|
||||
void ValidatePlaylist(byte *playlist)
|
||||
void ValidatePlaylist(byte *playlist, const byte *last)
|
||||
{
|
||||
while (*playlist != 0) {
|
||||
while (*playlist != 0 && playlist <= last) {
|
||||
/* Song indices are saved off-by-one so 0 is "nothing". */
|
||||
if (*playlist <= NUM_SONGS_AVAILABLE && !StrEmpty(GetSongName(*playlist - 1))) {
|
||||
playlist++;
|
||||
continue;
|
||||
}
|
||||
for (byte *p = playlist; *p != 0; p++) {
|
||||
for (byte *p = playlist; *p != 0 && p <= last; p++) {
|
||||
p[0] = p[1];
|
||||
}
|
||||
}
|
||||
|
||||
/* Make sure the list is null terminated. */
|
||||
*last = 0;
|
||||
}
|
||||
|
||||
/** Initialize the playlists */
|
||||
@ -118,8 +122,8 @@ void InitializeMusic()
|
||||
_playlists[k + 1][j] = 0;
|
||||
}
|
||||
|
||||
ValidatePlaylist(_settings_client.music.custom_1);
|
||||
ValidatePlaylist(_settings_client.music.custom_2);
|
||||
ValidatePlaylist(_settings_client.music.custom_1, lastof(_settings_client.music.custom_1));
|
||||
ValidatePlaylist(_settings_client.music.custom_2, lastof(_settings_client.music.custom_2));
|
||||
|
||||
if (BaseMusic::GetUsedSet()->num_available < _music_wnd_cursong) {
|
||||
/* If there are less songs than the currently played song,
|
||||
|
Loading…
Reference in New Issue
Block a user