From cfb7a04bd514cfeaa4c9dd3475abf486ed2e599d Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Fri, 11 Apr 2014 10:27:35 -0700 Subject: [PATCH] libdvbv5: fix ISDB-T frequency calculus on 32 bits machines On 32 bits, the frequency got truncated and become a negative number. Fix it. Signed-off-by: Mauro Carvalho Chehab --- lib/libdvbv5/descriptors/desc_isdbt_delivery.c | 3 ++- lib/libdvbv5/dvb-scan.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/libdvbv5/descriptors/desc_isdbt_delivery.c b/lib/libdvbv5/descriptors/desc_isdbt_delivery.c index e25ce46..883e88d 100644 --- a/lib/libdvbv5/descriptors/desc_isdbt_delivery.c +++ b/lib/libdvbv5/descriptors/desc_isdbt_delivery.c @@ -20,6 +20,7 @@ #include #include +#include int isdbt_desc_delivery_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, struct dvb_desc *desc) @@ -90,7 +91,7 @@ void isdbt_desc_delivery_print(struct dvb_v5_fe_parms *parms, const struct dvb_d dvb_loginfo("| area code %d", d->area_code); for (i = 0; i < d->num_freqs; i++) { - dvb_loginfo("| frequency[%d] %ld Hz", i, d->frequency[i] * 1000000l / 7); + dvb_loginfo("| frequency[%d] %" PRIu64 " Hz", i, (((uint64_t)d->frequency[i]) * 1000000ul) / 7); } } diff --git a/lib/libdvbv5/dvb-scan.c b/lib/libdvbv5/dvb-scan.c index 4fbd6d2..aac685f 100644 --- a/lib/libdvbv5/dvb-scan.c +++ b/lib/libdvbv5/dvb-scan.c @@ -831,7 +831,7 @@ static void add_update_nit_isdbt(struct dvb_table_nit *nit, } for (i = 0; i < d->num_freqs; i++) { - uint32_t frq = d->frequency[i] * 1000000l / 7; + uint32_t frq = (((uint64_t)d->frequency[i]) * 1000000ul / 7); new = dvb_scan_add_entry(tr->parms, tr->first_entry, tr->entry, frq, tr->shift, tr->pol); -- 2.7.4