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;
dval = va_arg(ap, double);
if (isinf(dval) == 1)
if (isinf(dval))
{
sarg = flags & FL_UPPER ? "INF" : "inf";
slen = strlen(sarg);
goto is_string;
}
if (isinf(dval) == -1)
{
sarg = flags & FL_UPPER ? "-INF" : "-inf";
if (isgreater(dval, 0.0))
{
sarg = flags & FL_UPPER ? "INF" : "inf";
}
else
{
sarg = flags & FL_UPPER ? "-INF" : "-inf";
}
slen = strlen(sarg);
goto is_string;
}