Currently the number of elements are counted wrong, its divided by the size
of a pointer and not the size of the struct
isdb_desc_partial_reception (uint16_t).

I noticed this when using "dvbv5-scan -v" in order to debug an ISDB-T table.

Signed-off-by: Felipe Concha Avello <felipe...@gmail.com>
---
diff --git a/lib/libdvbv5/descriptors/desc_partial_reception.c
b/lib/libdvbv5/descriptors/desc_partial_reception.c
index ce40882..63b8a07 100644
--- a/lib/libdvbv5/descriptors/desc_partial_reception.c
+++ b/lib/libdvbv5/descriptors/desc_partial_reception.c
@@ -38,7 +38,7 @@ int isdb_desc_partial_reception_init(struct
dvb_v5_fe_parms *parms,

        memcpy(d->partial_reception, p, d->length);

-       len = d->length / sizeof(d->partial_reception);
+       len = d->length / sizeof(*d->partial_reception);

        for (i = 0; i < len; i++)
                bswap16(d->partial_reception[i].service_id);
@@ -58,7 +58,7 @@ void isdb_desc_partial_reception_print(struct
dvb_v5_fe_parms *parms, const stru
        int i;
        size_t len;

-       len = d->length / sizeof(d->partial_reception);
+       len = d->length / sizeof(*d->partial_reception);

        for (i = 0; i < len; i++) {
                dvb_loginfo("|           service ID[%d]     %d", i,
d->partial_reception[i].service_id);
diff --git a/lib/libdvbv5/dvb-scan.c b/lib/libdvbv5/dvb-scan.c
index 1ffb98a..38f558b 100644
--- a/lib/libdvbv5/dvb-scan.c
+++ b/lib/libdvbv5/dvb-scan.c
@@ -905,7 +905,7 @@ static void add_update_nit_1seg(struct dvb_table_nit *nit,
        if (!tr->update)
                return;

-       len = d->length / sizeof(d->partial_reception);
+       len = d->length / sizeof(*d->partial_reception);

        for (i = 0; i < len; i++) {
                if (tr->entry->service_id ==
d->partial_reception[i].service_id) {
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to