diff options
author | Max Kellermann <max@duempel.org> | 2008-12-17 16:46:12 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-12-17 16:46:12 +0100 |
commit | 5d56b6ced841915d5ffe150c960cf855f358a02c (patch) | |
tree | 60cb9c04cc33f6d4e94d14265fdce520b7f14d27 /src/player_control.c | |
parent | 13192546a8386d91cac9045e86566906c220f3f6 (diff) | |
download | mpd-5d56b6ced841915d5ffe150c960cf855f358a02c.tar.gz mpd-5d56b6ced841915d5ffe150c960cf855f358a02c.tar.xz mpd-5d56b6ced841915d5ffe150c960cf855f358a02c.zip |
player_control: check if errored_song is set
getPlayerErrorStr() assumes that pc.errored_song is set when an error
occured. Since the song may have been deleted meanwhile, add a NULL
check.
Diffstat (limited to 'src/player_control.c')
-rw-r--r-- | src/player_control.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/player_control.c b/src/player_control.c index bc55bcff4..b8e9499f6 100644 --- a/src/player_control.c +++ b/src/player_control.c @@ -148,12 +148,22 @@ enum player_error getPlayerError(void) return pc.error; } +static const char * +pc_errored_song_uri(void) +{ + char path_max_tmp[MPD_PATH_MAX]; + + if (pc.errored_song == NULL) + return "?"; + + return song_get_url(pc.errored_song, path_max_tmp); +} + char *getPlayerErrorStr(void) { /* static OK here, only one user in main task */ static char error[MPD_PATH_MAX + 64]; /* still too much */ static const size_t errorlen = sizeof(error); - char path_max_tmp[MPD_PATH_MAX]; *error = '\0'; /* likely */ switch (pc.error) { @@ -163,11 +173,11 @@ char *getPlayerErrorStr(void) case PLAYER_ERROR_FILENOTFOUND: snprintf(error, errorlen, "file \"%s\" does not exist or is inaccessible", - song_get_url(pc.errored_song, path_max_tmp)); + pc_errored_song_uri()); break; case PLAYER_ERROR_FILE: snprintf(error, errorlen, "problems decoding \"%s\"", - song_get_url(pc.errored_song, path_max_tmp)); + pc_errored_song_uri()); break; case PLAYER_ERROR_AUDIO: strcpy(error, "problems opening audio device"); @@ -177,7 +187,7 @@ char *getPlayerErrorStr(void) break; case PLAYER_ERROR_UNKTYPE: snprintf(error, errorlen, "file type of \"%s\" is unknown", - song_get_url(pc.errored_song, path_max_tmp)); + pc_errored_song_uri()); } return *error ? error : NULL; } |