]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts: table dispatch - replace assert with debug log
authorJaroslav Kysela <perex@perex.cz>
Sat, 12 Jul 2014 20:16:48 +0000 (22:16 +0200)
committerJaroslav Kysela <perex@perex.cz>
Sat, 12 Jul 2014 20:16:48 +0000 (22:16 +0200)
src/input/mpegts/mpegts_input.c

index b928f6e4a34c1c7ca8d7b1172df3cf54faaeab54..00b3c6ab29bde4583827756b49a43767b85d5a41 100644 (file)
@@ -542,8 +542,7 @@ mpegts_input_recv_packets
 static void
 mpegts_input_table_dispatch ( mpegts_mux_t *mm, const uint8_t *tsb )
 {
-  int      i   = 0;
-  int      len;
+  int i = 0, len, err = 0;
   uint16_t pid = ((tsb[1] & 0x1f) << 8) | tsb[2];
   uint8_t  cc  = (tsb[3] & 0x0f);
   mpegts_table_t *mt, **vec;
@@ -554,10 +553,16 @@ mpegts_input_table_dispatch ( mpegts_mux_t *mm, const uint8_t *tsb )
   vec = alloca(len * sizeof(mpegts_table_t *));
   LIST_FOREACH(mt, &mm->mm_tables, mt_link) {
     mpegts_table_grab(mt);
-    vec[i++] = mt;
+    if (i < len)
+      vec[i++] = mt;
+    else
+      err++;
   }
   pthread_mutex_unlock(&mm->mm_tables_lock);
-  assert(i == len);
+  if (i != len) {
+    tvherror("psi", "tables count inconsistency (num %d, list %d)", len, i + err);
+    len = i;
+  }
 
   /* Process */
   for (i = 0; i < len; i++) {