service: Plug memory leak

This commit is contained in:
Andreas Öman 2012-11-07 09:28:18 +01:00
parent a2cf987afa
commit 9338b9529e

View file

@ -110,18 +110,21 @@ stream_clean(elementary_stream_t *st)
st->es_global_data_len = 0; st->es_global_data_len = 0;
} }
/** /**
* *
*/ */
void void
service_stream_destroy(service_t *t, elementary_stream_t *st) service_stream_destroy(service_t *t, elementary_stream_t *es)
{ {
if(t->s_status == SERVICE_RUNNING) if(t->s_status == SERVICE_RUNNING)
stream_clean(st); stream_clean(es);
TAILQ_REMOVE(&t->s_components, st, es_link);
free(st->es_nicename); avgstat_flush(&es->es_rate);
free(st); avgstat_flush(&es->es_cc_errors);
TAILQ_REMOVE(&t->s_components, es, es_link);
free(es->es_nicename);
free(es);
} }
/** /**
@ -489,17 +492,17 @@ service_destroy(service_t *t)
free(t->s_provider); free(t->s_provider);
free(t->s_dvb_charset); free(t->s_dvb_charset);
while((st = TAILQ_FIRST(&t->s_components)) != NULL) { while((st = TAILQ_FIRST(&t->s_components)) != NULL)
TAILQ_REMOVE(&t->s_components, st, es_link); service_stream_destroy(t, st);
free(st->es_nicename);
free(st);
}
free(t->s_pat_section); free(t->s_pat_section);
free(t->s_pmt_section); free(t->s_pmt_section);
sbuf_free(&t->s_tsbuf); sbuf_free(&t->s_tsbuf);
avgstat_flush(&t->s_cc_errors);
avgstat_flush(&t->s_rate);
service_unref(t); service_unref(t);
if(ch != NULL) { if(ch != NULL) {