# HG changeset patch # User Michael Spacefalcon # Date 1384456598 0 # Node ID 4ac657b95f52df235c4a62e223966dee819463cf # Parent 4d629b6bbcfdeb859228a0efe85a7f21e5ca5b18 gsm-fw: sprintf %f: handle infinities and NaNs diff -r 4d629b6bbcfd -r 4ac657b95f52 gsm-fw/sprintf/float.c --- a/gsm-fw/sprintf/float.c Thu Nov 14 19:03:52 2013 +0000 +++ b/gsm-fw/sprintf/float.c Thu Nov 14 19:16:38 2013 +0000 @@ -67,6 +67,15 @@ double fract, tmp; char *start, *t; + /* first order of business: weed out infinities and NaNs */ + if (isinf(number)) { + if (number < 0) + sign = '-'; + return _sprintf_field(op, width, flags, sign, "Inf", 3, 0, 0); + } + if (isnan(number)) + return _sprintf_field(op, width, flags, sign, "NaN", 3, 0, 0); + /* OK, we know it's a valid real like in the good old VAX days */ if (number < 0) { sign = '-'; number = -number;