diff options
-rw-r--r-- | src/mpdclient.c | 10 | ||||
-rw-r--r-- | src/screen_play.c | 5 |
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; |