printf-hook-builtin: Don't rely on isinf() return value signedness

Many systems don't return a negative value for negative infinities; so do
a separate check.
This commit is contained in:
Martin Willi 2013-10-24 15:17:30 +02:00
parent 5ce3c9b15a
commit e71c57467c
1 changed files with 9 additions and 8 deletions

View File

@ -926,15 +926,16 @@ int builtin_vsnprintf(char *buffer, size_t n, const char *format, va_list ap)
double dval; double dval;
dval = va_arg(ap, double); dval = va_arg(ap, double);
if (isinf(dval) == 1) if (isinf(dval))
{ {
sarg = flags & FL_UPPER ? "INF" : "inf"; if (isgreater(dval, 0.0))
slen = strlen(sarg); {
goto is_string; sarg = flags & FL_UPPER ? "INF" : "inf";
} }
if (isinf(dval) == -1) else
{ {
sarg = flags & FL_UPPER ? "-INF" : "-inf"; sarg = flags & FL_UPPER ? "-INF" : "-inf";
}
slen = strlen(sarg); slen = strlen(sarg);
goto is_string; goto is_string;
} }