diff options
| author | Lars-Dominik Braun <PromyLOPh@gmail.com> | 2008-06-12 16:06:56 +0200 | 
|---|---|---|
| committer | Lars-Dominik Braun <PromyLOPh@gmail.com> | 2008-06-12 16:06:56 +0200 | 
| commit | 8fe2fdd58acebf96c9fdacb4d13d63ff50a1f898 (patch) | |
| tree | 46b149f362b72877b7e25d1959ae1a73668a3590 | |
| parent | aff2ce1e5755f87293135ebf9f3995313c05cec9 (diff) | |
| download | pianobar-8fe2fdd58acebf96c9fdacb4d13d63ff50a1f898.tar.gz pianobar-8fe2fdd58acebf96c9fdacb4d13d63ff50a1f898.tar.bz2 pianobar-8fe2fdd58acebf96c9fdacb4d13d63ff50a1f898.zip | |
lib: Delete station pointer when deleting station
| -rw-r--r-- | libpiano/main.c | 20 | 
1 files changed, 19 insertions, 1 deletions
| diff --git a/libpiano/main.c b/libpiano/main.c index 8ec19bb..17bef4b 100644 --- a/libpiano/main.c +++ b/libpiano/main.c @@ -384,7 +384,25 @@ PianoReturn_t PianoDeleteStation (PianoHandle_t *ph, PianoStation_t *station) {  	PianoHttpPost (ph->curlHandle, url, requestStr, &retStr);  	ret = PianoXmlParseSimple (retStr); -	/* FIXME would be our job to delete station from global station list... */ +	if (ret == PIANO_RET_OK) { +		/* delete station from local station list */ +		PianoStation_t *curStation = ph->stations, *lastStation = NULL; +		while (curStation != NULL) { +			if (curStation == station) { +				printf ("deleting station\n"); +				if (lastStation != NULL) { +					lastStation->next = curStation->next; +				} else { +					/* first station in list */ +					ph->stations = curStation->next; +				} +				PianoDestroyStation (curStation); +				free (curStation); +			} +			lastStation = curStation; +			curStation = curStation->next; +		} +	}  	free (requestStr);  	free (retStr); | 
