]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
parser: fix the NULL set_service
authorJaroslav Kysela <perex@perex.cz>
Fri, 23 Mar 2018 14:10:49 +0000 (15:10 +0100)
committerJaroslav Kysela <perex@perex.cz>
Fri, 23 Mar 2018 17:05:29 +0000 (18:05 +0100)
src/esstream.c
src/esstream.h
src/parsers/message.c
src/service.c

index c8d94e8240d61001e21c1bd36eaad865401a0c5d..5a6074129bac15f3d03aacd340934ab6067f98d7 100644 (file)
@@ -62,7 +62,7 @@ void elementary_set_init
 /**
  *
  */
-void elementary_set_clean(elementary_set_t *set)
+void elementary_set_clean(elementary_set_t *set, service_t *t)
 {
   elementary_stream_t *st;
 
@@ -71,7 +71,7 @@ void elementary_set_clean(elementary_set_t *set)
     elementary_set_stream_destroy(set, st);
   free(set->set_nicename);
   set->set_nicename = NULL;
-  set->set_service = 0;
+  set->set_service = t;
 }
 
 /**
index cb9c70fa3b20a80aa528fe1fd8cfedf090125c77..a2872d6c48c9b0a204dd82b521143bc363b916f7 100644 (file)
@@ -161,7 +161,7 @@ struct elementary_set {
  */
 void elementary_set_init
   (elementary_set_t *set, int subsys, const char *nicename, service_t *t);
-void elementary_set_clean(elementary_set_t *set);
+void elementary_set_clean(elementary_set_t *set, service_t *t);
 void elementary_set_update_nicename(elementary_set_t *set, const char *nicename);
 void elementary_set_clean_streams(elementary_set_t *set);
 void elementary_set_stream_destroy(elementary_set_t *set, elementary_stream_t *es);
index 63a04f4ed0d68896f36acf90e5d1271745dbb09c..812392ad7708c56bcb48f8cf3c1f4c66424608db 100644 (file)
@@ -290,23 +290,24 @@ static void parser_clean_es(parser_es_t *pes)
 static void parser_input_start(parser_t *prs, streaming_message_t *sm)
 {
   streaming_start_t *ss = sm->sm_data;
+  elementary_set_t *set = &prs->prs_components;
   elementary_stream_t *es;
 
-  TAILQ_FOREACH(es, &prs->prs_components.set_all, es_link)
+  TAILQ_FOREACH(es, &set->set_all, es_link)
     parser_clean_es((parser_es_t *)es);
-  elementary_set_clean(&prs->prs_components);
+  elementary_set_clean(set, prs->prs_service);
 
-  elementary_stream_create_from_start(&prs->prs_components, ss, sizeof(parser_es_t));
-  TAILQ_FOREACH(es, &prs->prs_components.set_all, es_link) {
+  elementary_stream_create_from_start(set, ss, sizeof(parser_es_t));
+  TAILQ_FOREACH(es, &set->set_all, es_link) {
     parser_init_es((parser_es_t *)es, prs);
-    TAILQ_INSERT_TAIL(&prs->prs_components.set_filter, es, es_filter_link);
+    TAILQ_INSERT_TAIL(&set->set_filter, es, es_filter_link);
   }
 
   prs->prs_current_pcr = PTS_UNSET;
   prs->prs_candidate_pcr = PTS_UNSET;
   prs->prs_current_pcr_guess = 0;
   prs->prs_pcr_boundary = 90000;
-  if (elementary_stream_has_no_audio(&prs->prs_service->s_components, 1))
+  if (elementary_stream_has_no_audio(set, 1))
     prs->prs_pcr_boundary = 6*90000;
 
   streaming_target_deliver2(prs->prs_output, sm);
@@ -391,6 +392,6 @@ parser_destroy(streaming_target_t *pad)
     if (pes->es_psi.mt_name)
       dvb_table_parse_done(&pes->es_psi);
   }
-  elementary_set_clean(&prs->prs_components);
+  elementary_set_clean(&prs->prs_components, NULL);
   free(prs);
 }
index 19c6fe9982c9a2f32a3b0b33fab1833fad4a6e18..689409118406e39dfffc98dc1230070207c16013 100644 (file)
@@ -608,7 +608,7 @@ service_destroy(service_t *t, int delconf)
 
   t->s_status = SERVICE_ZOMBIE;
 
-  elementary_set_clean(&t->s_components);
+  elementary_set_clean(&t->s_components, NULL);
 
   if (t->s_hbbtv) {
     htsmsg_destroy(t->s_hbbtv);