]> git.tdb.fi Git - ext/subsurface.git/commitdiff
libdivecomputer does crazy gas mixes too
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 1 Sep 2011 20:46:24 +0000 (13:46 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 1 Sep 2011 20:46:24 +0000 (13:46 -0700)
Did I just say "In comparison, the libdivecomputer output is nice and
sane"?

It turns out that libdivecomputer has been doing some drugs too when it
comes to gas mixes.  Like showing O2 percentages as 255.0% and N2
percentages as -155.0%.

Clearly libdivecomputer uses a 'unsigned char' for oxygen percentage,
and makes "-1" be "undefined".  And then it prints that non-existing mix
out, and in the process does MATH on the damn thing ("100-O2") to
"calculate" the nitrogen percentage.

Christ.

Just make the parser silently ignore the craziness, because printing out
"Strange percentage reading -155.0" a few hundred times just doesn't
make anything any better.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
parse-xml.c

index 892e0fb2014fe8abe99b5e7bbc5fd3e7565dc076..e0231ce465498b61f03adbdaaf2406c54303f499 100644 (file)
@@ -326,6 +326,9 @@ static void percent(char *buffer, void *_fraction)
 
 static void gasmix(char *buffer, void *_fraction)
 {
+       /* libdivecomputer does negative percentages. */
+       if (*buffer == '-')
+               return;
        if (gasmix_index < MAX_MIXES)
                percent(buffer, _fraction);
 }