• Eric Wong's avatar
    Several bugfixes during exit found by valgrind · e5df85db
    Eric Wong authored
    First, make sure we call finishPlaylist() before
    closeMp3Directory() since the latter will free non-SONG_TYPE_URL
    songs in playlist, which causes an invalid read when we try to
    look for SONG_TYPE_URL songs to free in finishPlaylist.
    
    Secondly, make sure our children have all exited before freeing
    the playerData.  If we do not, slowly-delivered signals can
    trigger a race condition in the signal handlers of the decode
    and player processes which rely on getPlayerData.  To avoid
    waitpid-ing too long (or at all), move the freePlayerData() call
    farther down in main() (this won't affect anything else)
    to give the OS a better chance to deliver signals and finish running
    sig handlers for terminated children.
    
    git-svn-id: https://svn.musicpd.org/mpd/trunk@4640 09075e82-0dd4-0310-85a5-a0d7c8717e4f
    e5df85db
playerData.c 5.67 KB