aboutsummaryrefslogtreecommitdiffstats
path: root/src/player_control.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-12-17 16:46:12 +0100
committerMax Kellermann <max@duempel.org>2008-12-17 16:46:12 +0100
commit5d56b6ced841915d5ffe150c960cf855f358a02c (patch)
tree60cb9c04cc33f6d4e94d14265fdce520b7f14d27 /src/player_control.c
parent13192546a8386d91cac9045e86566906c220f3f6 (diff)
downloadmpd-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 '')
-rw-r--r--src/player_control.c18
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;
}