diff --git a/src/utils/src/eprintf.c b/src/utils/src/eprintf.c index c339bf2dd..4d18b7dcf 100644 --- a/src/utils/src/eprintf.c +++ b/src/utils/src/eprintf.c @@ -29,6 +29,7 @@ #include #include #include +#include static const char digit[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; @@ -275,15 +276,21 @@ int evprintf(putc_t putcf, const char * fmt, va_list ap) break; case 'f': num = va_arg(ap, double); - if(num<0) - { - putcf('-'); - num = -num; - len++; + if (isnan(num)) { + putcf('n');len++; + putcf('a');len++; + putcf('n');len++; + } else { + if(num<0) + { + putcf('-'); + num = -num; + len++; + } + len += itoa10(putcf, (int)num, 0); + putcf('.'); len++; + len += itoa10(putcf, (num - (int)num) * power(10,precision), precision); } - len += itoa10(putcf, (int)num, 0); - putcf('.'); len++; - len += itoa10(putcf, (num - (int)num) * power(10,precision), precision); break; case 's': str = va_arg(ap, char* );