From d20878bce0c0d84e5b49d1b9642e71bb0d18341a Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sun, 18 Dec 2011 12:37:27 +0100 Subject: Fix genre selection segfault Closes #193 and #194 --- src/ui.c | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/src/ui.c b/src/ui.c index 7c80079..9a76266 100644 --- a/src/ui.c +++ b/src/ui.c @@ -584,16 +584,19 @@ void BarStationFromGenre (BarApp_t *app) { i++; curCat = curCat->next; } - /* select category or exit */ - BarUiMsg (&app->settings, MSG_QUESTION, "Select category: "); - if (BarReadlineInt (&i, &app->input) == 0) { - return; - } - curCat = app->ph.genreStations; - while (curCat != NULL && i > 0) { - curCat = curCat->next; - i--; - } + + do { + /* select category or exit */ + BarUiMsg (&app->settings, MSG_QUESTION, "Select category: "); + if (BarReadlineInt (&i, &app->input) == 0) { + return; + } + curCat = app->ph.genreStations; + while (curCat != NULL && i > 0) { + curCat = curCat->next; + i--; + } + } while (curCat == NULL); /* print all available stations */ curGenre = curCat->genres; @@ -603,15 +606,19 @@ void BarStationFromGenre (BarApp_t *app) { i++; curGenre = curGenre->next; } - BarUiMsg (&app->settings, MSG_QUESTION, "Select genre: "); - if (BarReadlineInt (&i, &app->input) == 0) { - return; - } - curGenre = curCat->genres; - while (curGenre != NULL && i > 0) { - curGenre = curGenre->next; - i--; - } + + do { + BarUiMsg (&app->settings, MSG_QUESTION, "Select genre: "); + if (BarReadlineInt (&i, &app->input) == 0) { + return; + } + curGenre = curCat->genres; + while (curGenre != NULL && i > 0) { + curGenre = curGenre->next; + i--; + } + } while (curGenre == NULL); + /* create station */ BarUiMsg (&app->settings, MSG_INFO, "Adding shared station \"%s\"... ", curGenre->name); reqData.id = curGenre->musicId; -- cgit v1.2.3