player: fix race condition during tag update
When a tag is updated, the old tag was freed before the new one was created. Reverse the order to be sure that other threads always see a valid pointer. This still leaves a possible race condition, but it will be addressed later.
This commit is contained in:
parent
acf0d141be
commit
1bfa6a94e2
@ -225,11 +225,13 @@ play_chunk(struct song *song, struct music_chunk *chunk,
|
||||
|
||||
if (!song_is_file(song)) {
|
||||
/* always update the tag of remote streams */
|
||||
struct tag *old_tag = song->tag;
|
||||
|
||||
if (song->tag != NULL)
|
||||
tag_free(song->tag);
|
||||
song->tag = tag_dup(chunk->tag);
|
||||
|
||||
if (old_tag != NULL)
|
||||
tag_free(old_tag);
|
||||
|
||||
/* notify all clients that the tag of the
|
||||
current song has changed */
|
||||
idle_add(IDLE_PLAYER);
|
||||
|
Loading…
Reference in New Issue
Block a user