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 | |
| parent | 39a2ff7d44ccb19ea4de98fc52234d2506898275 (diff) | |
| download | pianobar-d20878bce0c0d84e5b49d1b9642e71bb0d18341a.tar.gz pianobar-d20878bce0c0d84e5b49d1b9642e71bb0d18341a.tar.bz2 pianobar-d20878bce0c0d84e5b49d1b9642e71bb0d18341a.zip | |
Fix genre selection segfault
Closes #193 and #194
| -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; | 
