aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mpdclient.c10
-rw-r--r--src/screen_play.c5
2 files changed, 9 insertions, 6 deletions
diff --git a/src/mpdclient.c b/src/mpdclient.c
index 2318dcffc..ae4a7618f 100644
--- a/src/mpdclient.c
+++ b/src/mpdclient.c
@@ -439,11 +439,13 @@ gint
mpdclient_cmd_delete(mpdclient_t *c, gint idx)
{
gint retval = 0;
- struct mpd_song *song = playlist_get_song(c, idx);
+ struct mpd_song *song;
- if( !song )
+ if (idx < 0 || (guint)idx >= playlist_length(&c->playlist))
return -1;
+ song = playlist_get(&c->playlist, idx);
+
/* send the delete command to mpd */
#ifdef ENABLE_SONG_ID
D("Delete id:%d\n", song->id);
@@ -487,8 +489,8 @@ mpdclient_cmd_move(mpdclient_t *c, gint old_index, gint new_index)
(guint)new_index >= c->playlist.list->len)
return -1;
- song1 = playlist_get_song(c, old_index);
- song2 = playlist_get_song(c, new_index);
+ song1 = playlist_get(&c->playlist, old_index);
+ song2 = playlist_get(&c->playlist, new_index);
/* send the move command to mpd */
#ifdef ENABLE_SONG_ID
diff --git a/src/screen_play.c b/src/screen_play.c
index c59c766cd..d257ec1db 100644
--- a/src/screen_play.c
+++ b/src/screen_play.c
@@ -80,9 +80,10 @@ list_callback(unsigned idx, int *highlight, void *data)
mpdclient_t *c = (mpdclient_t *) data;
mpd_Song *song;
- if( (song=playlist_get_song(c, idx)) == NULL ) {
+ if (idx >= playlist_length(&c->playlist))
return NULL;
- }
+
+ song = playlist_get(&c->playlist, idx);
if( c->song && song->id==c->song->id && !IS_STOPPED(c->status->state) ) {
*highlight = 1;