diff options
| author | Lars-Dominik Braun <PromyLOPh@gmail.com> | 2008-06-12 17:14:56 +0200 | 
|---|---|---|
| committer | Lars-Dominik Braun <PromyLOPh@gmail.com> | 2008-06-12 17:14:56 +0200 | 
| commit | 35c306d0e917a3fcbca30e9ad09a214e57548edd (patch) | |
| tree | 97a2d49be03ccb3073c2aa1514c130c93e3944b8 | |
| parent | c5819e14350678efc1e2415191848e87f0f21f85 (diff) | |
| download | pianobar-windows-35c306d0e917a3fcbca30e9ad09a214e57548edd.tar.gz pianobar-windows-35c306d0e917a3fcbca30e9ad09a214e57548edd.tar.bz2 pianobar-windows-35c306d0e917a3fcbca30e9ad09a214e57548edd.zip  | |
client: Fix segfaults when changing station, banning and skipping tracks
This was caused by reading uninitialized memory. It was freed by
PianoDestroyPlaylist.
| -rw-r--r-- | src/main.c | 9 | 
1 files changed, 6 insertions, 3 deletions
@@ -261,7 +261,6 @@ int main (int argc, char **argv) {  	curSong = ph.playlist;  	/* play first track */  	while (!doQuit) { -		PianoSong_t *lastSong = NULL;  		pthread_t playerThread;  		printf ("\"%s\" by \"%s\"%s\n", curSong->title, curSong->artist,  				(curSong->rating == PIANO_RATE_LOVE) ? " (Loved)" : ""); @@ -294,6 +293,7 @@ int main (int argc, char **argv) {  						}  						/* pandora does this too, I think */  						PianoDestroyPlaylist (&ph); +						curSong = NULL;  						break;  					case 'd': @@ -306,6 +306,7 @@ int main (int argc, char **argv) {  								player.doQuit = 1;  								printf ("Deleted.\n");  								PianoDestroyPlaylist (&ph); +								curSong = NULL;  								curStation = selectStation (&ph);  							} else {  								printf ("Error while deleting station.\n"); @@ -353,6 +354,7 @@ int main (int argc, char **argv) {  					case 's':  						player.doQuit = 1;  						PianoDestroyPlaylist (&ph); +						curSong = NULL;  						curStation = selectStation (&ph);  						printf ("changed station to %s\n", curStation->name);  						break; @@ -363,8 +365,9 @@ int main (int argc, char **argv) {  		free (player.url);  		/* what's next? */ -		lastSong = curSong; -		curSong = lastSong->next; +		if (curSong != NULL) { +			curSong = curSong->next; +		}  		if (curSong == NULL && !doQuit) {  			printf ("receiving new playlist\n");  			PianoDestroyPlaylist (&ph);  | 
