From 2b06a0b2234cf2779f80e87038011067be282bcb Mon Sep 17 00:00:00 2001 From: Jeremie Guichard Date: Thu, 9 Mar 2017 23:07:30 +0700 Subject: Fix potential double/float to int rounding errors Not using lrint(f) when converting double/float to int creates rounding errors. This error was detected by TestParse::testParseDM4 failure on Windows. It was creating rounding inconsistencies on Linux too, see change in TestDiveDM4.xml. Enable -Wfloat-conversion for gcc version greater than 4.9.0 Signed-off-by: Jeremie Guichard --- core/liquivision.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'core/liquivision.c') diff --git a/core/liquivision.c b/core/liquivision.c index 9347a724a..e2e9ff75e 100644 --- a/core/liquivision.c +++ b/core/liquivision.c @@ -234,9 +234,9 @@ static void parse_dives (int log_version, const unsigned char *buf, unsigned int // Xeo, with CNS and OTU start_cns = *(float *) (buf + ptr); ptr += 4; - dive->cns = *(float *) (buf + ptr); // end cns + dive->cns = lrintf(*(float *) (buf + ptr)); // end cns ptr += 4; - dive->otu = *(float *) (buf + ptr); + dive->otu = lrintf(*(float *) (buf + ptr)); ptr += 4; dive_mode = *(buf + ptr++); // 0=Deco, 1=Gauge, 2=None algorithm = *(buf + ptr++); // 0=ZH-L16C+GF -- cgit v1.2.3-70-g09d2