mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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 <djebrest@gmail.com>
This commit is contained in:
parent
406e4287eb
commit
2b06a0b223
20 changed files with 109 additions and 100 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue