diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2011-12-18 12:37:27 +0100 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2011-12-18 12:37:27 +0100 |
commit | d20878bce0c0d84e5b49d1b9642e71bb0d18341a (patch) | |
tree | 33424c7055ed6de36514e7ac37dd8c5f5d33b2c2 /src | |
parent | 39a2ff7d44ccb19ea4de98fc52234d2506898275 (diff) | |
download | pianobar-windows-d20878bce0c0d84e5b49d1b9642e71bb0d18341a.tar.gz pianobar-windows-d20878bce0c0d84e5b49d1b9642e71bb0d18341a.tar.bz2 pianobar-windows-d20878bce0c0d84e5b49d1b9642e71bb0d18341a.zip |
Fix genre selection segfault
Closes #193 and #194
Diffstat (limited to 'src')
-rw-r--r-- | src/ui.c | 45 |
1 files changed, 26 insertions, 19 deletions
@@ -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; |