aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/screen_browser.c3
-rw-r--r--src/screen_file.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/src/screen_browser.c b/src/screen_browser.c
index d2c8aa08e..4c8bc2ed6 100644
--- a/src/screen_browser.c
+++ b/src/screen_browser.c
@@ -250,7 +250,8 @@ enqueue_and_play(mpdclient_t *c, filelist_entry_t *entry)
static struct filelist_entry *
browser_get_selected(const struct screen_browser *browser)
{
- if (browser->filelist == NULL)
+ if (browser->filelist == NULL ||
+ browser->lw->selected >= filelist_length(browser->filelist))
return NULL;
return filelist_get(browser->filelist, browser->lw->selected);
diff --git a/src/screen_file.c b/src/screen_file.c
index 9dd59001c..26b273972 100644
--- a/src/screen_file.c
+++ b/src/screen_file.c
@@ -62,6 +62,9 @@ handle_save(screen_t *screen, mpdclient_t *c)
filelist_entry_t *entry;
char *defaultname = NULL;
+ if (browser.lw->selected >= filelist_length(browser.filelist))
+ return -1;
+
entry = filelist_get(browser.filelist, browser.lw->selected);
if( entry && entry->entity ) {
mpd_InfoEntity *entity = entry->entity;
@@ -83,6 +86,9 @@ handle_delete(screen_t *screen, mpdclient_t *c)
char *str, *buf;
int key;
+ if (browser.lw->selected >= filelist_length(browser.filelist))
+ return -1;
+
entry = filelist_get(browser.filelist, browser.lw->selected);
if( entry==NULL || entry->entity==NULL )
return -1;