From 17f7c150a8534b1d92521cccdb2551914f20f9e8 Mon Sep 17 00:00:00 2001 From: Ullrich kossow Date: Sun, 17 Aug 2014 23:37:47 +0200 Subject: [PATCH] Corrected some unsigned int comparisons --- src/input/mpegts/linuxdvb/linuxdvb_rotor.c | 2 +- src/input/mpegts/mpegts_network_dvb.c | 8 ++++---- src/tvheadend.h | 3 ++- src/utils.c | 5 +++++ 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/input/mpegts/linuxdvb/linuxdvb_rotor.c b/src/input/mpegts/linuxdvb/linuxdvb_rotor.c index fdad1c4f..68c2dd36 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_rotor.c +++ b/src/input/mpegts/linuxdvb/linuxdvb_rotor.c @@ -143,7 +143,7 @@ linuxdvb_rotor_grace if (ld->ld_satconf->lse_parent->ls_orbital_dir == 'W') curpos = -(curpos); - return (lr->lr_rate*(abs(curpos - lr->lr_position))+999)/1000; + return (lr->lr_rate*(deltaU32(curpos, lr->lr_position))+999)/1000; } static int diff --git a/src/input/mpegts/mpegts_network_dvb.c b/src/input/mpegts/mpegts_network_dvb.c index 3f11992b..04afab5b 100644 --- a/src/input/mpegts/mpegts_network_dvb.c +++ b/src/input/mpegts/mpegts_network_dvb.c @@ -242,10 +242,10 @@ dvb_network_check_symbol_rate( dvb_mux_t *lm, dvb_mux_conf_t *dmc, int deltar ) return dvb_network_check_bandwidth(lm->lm_tuning.u.dmc_fe_ofdm.bandwidth, dmc->u.dmc_fe_ofdm.bandwidth); case DVB_TYPE_C: - return abs(lm->lm_tuning.u.dmc_fe_qam.symbol_rate - + return deltaU32(lm->lm_tuning.u.dmc_fe_qam.symbol_rate, dmc->u.dmc_fe_qam.symbol_rate) > deltar; case DVB_TYPE_S: - return abs(lm->lm_tuning.u.dmc_fe_qpsk.symbol_rate - + return deltaU32(lm->lm_tuning.u.dmc_fe_qpsk.symbol_rate, dmc->u.dmc_fe_qpsk.symbol_rate) > deltar; case DVB_TYPE_ATSC: return 0; @@ -296,7 +296,7 @@ dvb_network_find_mux } /* Reject if not same frequency (some tolerance due to changes and diff in NIT) */ - if (abs(lm->lm_tuning.dmc_fe_freq - dmc->dmc_fe_freq) > deltaf) continue; + if (deltaU32(lm->lm_tuning.dmc_fe_freq, dmc->dmc_fe_freq) > deltaf) continue; /* Reject if not same symbol rate (some tolerance due to changes and diff in NIT) */ if (dvb_network_check_symbol_rate(lm, dmc, deltar)) continue; @@ -430,7 +430,7 @@ dvb_network_create_mux tuning_old = lm->lm_tuning; #endif /* Handle big diffs that have been allowed through for DVB-S */ - if (abs(dmc->dmc_fe_freq - lm->lm_tuning.dmc_fe_freq) > 4000) { + if (deltaU32(dmc->dmc_fe_freq, lm->lm_tuning.dmc_fe_freq) > 4000) { lm->lm_tuning.dmc_fe_freq = dmc->dmc_fe_freq; save = 1; } diff --git a/src/tvheadend.h b/src/tvheadend.h index 81c92c40..8597d9c5 100644 --- a/src/tvheadend.h +++ b/src/tvheadend.h @@ -718,7 +718,8 @@ int makedirs ( const char *path, int mode ); int rmtree ( const char *path ); char *regexp_escape ( const char *str ); - +uint32_t deltaU32(uint32_t a, uint32_t b); + #define SKEL_DECLARE(name, type) type *name; #define SKEL_ALLOC(name) do { if (!name) name = calloc(1, sizeof(*name)); } while (0) #define SKEL_USED(name) do { name = NULL; } while (0) diff --git a/src/utils.c b/src/utils.c index 9c252a4b..039f4178 100644 --- a/src/utils.c +++ b/src/utils.c @@ -585,3 +585,8 @@ regexp_escape(const char* str) *b = 0; return tmp; } + +uint32_t deltaU32(uint32_t a, uint32_t b) +{ + return (a > b) ? (a - b) : (b - a); +}