--- multiplexer/en300468ts.c 2009/09/09 10:28:44 1.7 +++ multiplexer/en300468ts.c 2010/02/03 14:06:00 1.8 @@ -1283,6 +1283,7 @@ static int gentab_eit(struct sitab *st, unsigned char *p = b; unsigned long *t = st->tab; int i; + unsigned char c; struct sitab *gt; *p = i = st->tableid; p += 3; @@ -1305,18 +1306,21 @@ static int gentab_eit(struct sitab *st, } *p++ = i; i = *t++; - *p++ = *t >> 8; - *p++ = *t++; - *p++ = *t >> 8; - *p++ = *t++; - *p++ = *t >> 16; - *p++ = *t >> 8; - *p++ = *t++; - *p++ = *t >> 16; - *p++ = *t >> 8; - *p++ = *t++; - i = *t++ << 5; - p = gendescr(st, p, &t, i); + while (i > 0) { + *p++ = *t >> 8; + *p++ = *t++; + *p++ = *t >> 8; + *p++ = *t++; + *p++ = *t >> 16; + *p++ = *t >> 8; + *p++ = *t++; + *p++ = *t >> 16; + *p++ = *t >> 8; + *p++ = *t++; + c = *t++ << 5; + p = gendescr(st, p, &t, c); + i -= 1; + } i = p-b+1; b[1] = 0xF0 | (i >> 8); b[2] = i;